ミングエン:
私はクラスを使用しCalendar
作成しますDate
。> 2018年12月29日が、2018年12月30日-私は日付が12分の31または30/12で設定私のテストケースでは、私の日付の年は私のセット+ 1例2018年12月29日の日付の年です- > 2019年12月30日。私はなぜか分からないのですか?私のコード:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class MyClass {
public static void main(String args[]) {
calendarBug(2018, 11, 29);
calendarBug(2018, 11, 30);
}
public static void calendarBug(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
Date date = calendar.getTime();
System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(date));
}
}
出力:
2018-12-29
2019-12-30
ブラックコーヒー:
YYYY
用表し週年。使用yyyy
代わりに。
Javadocから:
週年度はWEEK_OF_YEARサイクルと同期しています。最初と最後の週(包括的)の間のすべての週は、同じ週の年の値を持っています。そのため、週一年の最初と最後の日は別の暦年値を有することができます。
例えば、1998年1月1日は木曜日です。getFirstDayOfWeek()は月曜日とgetMinimalDaysInFirstWeek(ある)4(ISO 8601標準互換設定)である場合には、1月4日、1998年に1998の1997年12月29日に開始し、終了の週1週年は、最後の3日間1998です暦年1997年の場合の、しかし、getFirstDayOfWeek()は1998年1月10日1998年1998年1月4日に開始し、終了の後、週1日曜日、です。1998年の最初の3日間は、1997年の週53の一部であり、その週の年は1997年です。