1

日付を 2013-01-01 00:00:00 に設定していますが、日付は Fri Feb 01 00:00:00 GMT+01:00 2013 になります。

なんで?

Calendar calendar = Calendar.getInstance();
calendar.set(2013, 1, 1, 0, 0, 0);
Date startDate = calendar.getTime();
4

3 に答える 3

7

Java の日付クラスでは、月の番号付けは 0 から始まります。Calendarこのよくある間違いを避けるために、クラスで月の定数を使用してください。

calendar.set(2013, Calendar.JANUARY, 1, 0, 0, 0);
于 2013-01-17T16:47:36.000 に答える
7

1 は 2 月を意味します。0 は 1 月です。月は 0 から始まるインデックスが付けられます。常にニーモニックを使用することをお勧めします。Calendar.JANUARY

于 2013-01-17T16:45:55.563 に答える
0

関連するちょっとした落とし穴...

私の年が間違っていたので、最初はこれは私が受けているのと同じ問題ではないと思いました。12 月に '12' を設定しましたが、月はオフセットで 0 から始まるため、Calendar は実際にはその 12 を繰り越して翌年の 1 月を意味するため、年が間違っている場合は、月も間違っていないか確認してください。私のように転がっている可能性があります。

つまり、setDate(2015, 12, 6) は、2016 年 1 月 6 日の日付になります。

そのため、暦月の定数を使用してください。

于 2016-06-01T20:19:16.140 に答える