public class DateTime {
private static SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
private static List<String> calList=new LinkedList<String>();
public static void main(String[] args) {
// 年度開始日と終了日
/*
List<String> list=getYearRange(2025);
for(String date : list) {
System.out.println(date);
}
*/
// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Calendar startCal= makeStartCalender(2025);
Calendar endCal=makeEndDate(2025);
String startDateTime=dateFormat.format(startCal.getTime());
calList.add(startDateTime);
while(true) {
Calendar cal=getNext30Minite(startCal,30);
String dateTime=dateFormat.format(cal.getTime());
System.out.println(dateTime);
calList.add(dateTime);
int diff=endCal.compareTo(cal);
System.out.println("diff="+diff);
if(diff==0) {
// startCalとcalが同じ日時
break;
}
}
for(String cal: calList) {
// 日付出力する
String strDate=cal;
System.out.println(strDate);
}
}
public static Calendar makeStartCalender(int startYear) {
// 指定した年の4月1日
// 2025年の4月1日の場合
Calendar calendar=Calendar.getInstance();
calendar.set(startYear,3,1,0,0,0);
return calendar;
}
public static Calendar makeEndDate(int year) {
Calendar calendar=Calendar.getInstance();
//calendar.set(year+1, 2,31,11,59,30);
calendar.set(year, 3,30,23,30,00);
return calendar;
}
public static Calendar getNext30Minite(Calendar calendar,int addMinite) {
calendar.add(Calendar.MINUTE, addMinite);
return calendar;
}
// 年度の開始日と終了日を取得する
public static List<String> getYearRange(int year) {
List<String> list=new ArrayList<String>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDateTime startOfYear=LocalDateTime.of(year, Month.APRIL, 1,0,0);
LocalDateTime endOfYear=LocalDateTime.of(year+1, Month.MARCH, 31,0,0);
String strStartOfYear= startOfYear.format(formatter);
String strEndOfYear= endOfYear.format(formatter);
list.add(strStartOfYear);
list.add(strEndOfYear);
return list;
}
}