グレゴリオ暦開始は日本時間のAM09:00から
ロケールが日本であった場合
Date changeDay = (new GregorianCalendar()).getGregorianChange(); System.out.println("Gregorian Change is " + changDay);
実行結果
Gregorian Change is Fri Oct 15 09:00:00 JST 1582
コンストラクタ GregorianCalendar(int, int, int)
もしグレゴリオ暦以降というチェックをかけたい場合
GregorianCalendar(int, int, int) コンストラクタの使用には注意が必要!
時分秒がゼロ埋めされてしまう
Date changeDay = (new GregorianCalendar()).getGregorianChange(); Date date1582_10_15 = (new GregorianCalendar(1582, 10-1, 15)).getTime(); System.out.println("Gregorian Change is " + changDay); System.out.println("date1582_10_15 is " + date1582_10_15); System.out.println("changeDate.after(date1582_10_15) : " + changeDate.after(date1582_10_15)); System.out.println("changeDate.before(date1582_10_15): " + changeDate.before(date1582_10_15));
実行結果
Gregorian Change is Fri Oct 15 09:00:00 JST 1582
date1582_10_15 is Fri Oct 15 00:00:00 JST 1582
changeDate.after(date1582_10_15) : true
changeDate.before(date1582_10_15): false
つまり、日本時間で「1582年10月15日」の
「09:00:00」以降がグレゴリオ暦であり
「08:59:59」はグレゴリオ暦ではない(ユリウス暦というらしい?)
「1582/10/15」という入力データだけでは
グレゴリオ暦として扱うのか、ユリウス暦で扱うのか
決定できないので、扱いには注意が必要だ