グレゴリオ暦開始は日本時間の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」という入力データだけでは
グレゴリオ暦として扱うのか、ユリウス暦で扱うのか
決定できないので、扱いには注意が必要だ