1

私はJAVAスイングでアプリケーションを開発しています.今日のように現在の日付との日付差が16/04/2013必要15/04/2013でした. 次のコードを試しました:

Calendar cal = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
cal.roll(Calendar.DAY_OF_YEAR, -1);
//if within the first 30 days, need to roll the year as well
if(cal.after(cal2)){
     cal.roll(Calendar.YEAR, -1);
}
System.out.println("Year " + cal.get(Calendar.YEAR));
System.out.println("Month " + cal.get(Calendar.MONTH));
System.out.println("Day " + cal.get(Calendar.DAY_OF_MONTH));

このコードでは、1 日前の日付を取得することを期待していました。しかし、代わりに、1か月前の日付を取得しています。元。今日が16/04/2013の場合、予想される出力は ですが、出力15/04/2013として 2013 年 3 月 15 日 (1 か月前) を取得しています。

4

2 に答える 2

2

これは、 java.util.Date の実装がうまくいかない典型的な例です: 月の記数法はゼロから始まります:

0-> January
1-> February
2-> March
3-> April.

どういう意味ですか:

new Date(10,1,2013) //10th of January of 2013

得られるもの: 3983 年 2 月 10 日 (1970+2013)

于 2013-04-16T14:21:06.167 に答える