重複の可能性:
Javaで日付を1日インクリメントするにはどうすればよいですか?
public static ArrayList<Calendar> getCalendarsForThreeYears() {
if (calendars == null) {
calendars = new ArrayList<Calendar>();
final Calendar moving = Calendar.getInstance();
final int targetYear = moving.get(Calendar.YEAR) + 1;
moving.set(moving.get(Calendar.YEAR) - 1, Calendar.JANUARY, 1);
final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
while (!(moving.get(Calendar.YEAR) == targetYear
&& moving.get(Calendar.MONTH) == Calendar.DECEMBER && moving
.get(Calendar.DAY_OF_MONTH) == 31)) {
final Calendar c = (Calendar) moving.clone();
calendars.add(c);
moving.roll(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(c.getTime()));
}
}
return calendars;
}
これで3年間(現在、現在、次の前のCalendar
オブジェクト)のオブジェクトを作成したいと思います。
Calendar.DAY_OF_MONTH
ただし、月末にローリングしてもロールされないため、これは無限ループです。Calendar.MONTH
推奨されるアプローチはどれですか?