6

私のプログラムは現在の日付を取得し、ループでその日付に 1 週​​間を追加して、新しい日付を出力します。何かのようなもの:

Calendar cal = Calendar.getInstance();
for (int i=0; i < 52; i++) {
cal.add(Calendar.DATE, 7);
// print date out
}

add メソッドは、12 月 30 日に到達するまで期待どおりに機能します。この時点で、年は 2012 年から 2013 年にジャンプします。

そのため、2012 年 4 月 16 日の今日の日付を使用して、いくつかの異なる入力をテストしました。

this - cal.add(Calendar.DATE, 38*7);
yields- "date:1/7/2013"
this - cal.add(Calendar.DATE, 37*7);
yields- "date:12/31/2013"
this - cal.add(Calendar.DATE, 37*7-1);
yields- "date:12/30/2013"
this - cal.add(Calendar.DATE, 37*7-2);
yields- "date:12/29/2012"

そのため、12 月 30 日と 12 月 31 日までは年が正しく、1 月に戻ると再び年が修正されることに気付きました。これを行う理由はありますか?2012年が閏年であることと何か関係がありますか、それともaddメソッドを誤解していますか

4

3 に答える 3

0

そのはず:

cal.add(Calendar.DAY_OF_YEAR, 7);

Calendar.DATEと同じCalendar.DAY_OF_MONTHです。

于 2012-04-16T20:27:54.310 に答える