グレゴリオ暦の最大値と最小値はどれくらいですか?
それらはInteger.MAX_VALUEのような定数ですか、それともGregorianCalendar.get(BLAH)ですか?
一言で言えば、最小/最大値でGregorianCalendarインスタンスを作成するにはどうすればよいですか?
グレゴリオ暦の最大値と最小値はどれくらいですか?
それらはInteger.MAX_VALUEのような定数ですか、それともGregorianCalendar.get(BLAH)ですか?
一言で言えば、最小/最大値でGregorianCalendarインスタンスを作成するにはどうすればよいですか?
私はjoekutnerの提案を取り、次のように実行しました:
GregorianCalendar gCal = new GregorianCalendar( );
gCal.setTime(new Date(Long.MIN_VALUE));
System.out.println( "Min Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));
gCal.set( Calendar.SECOND, 3 );
System.out.println( "Min Date less 1 second is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));
gCal.setTime(new Date(Long.MAX_VALUE));
System.out.println( "Max Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));
Min Date is Sun Dec 02 16:47:04 GMT 292269055 0
Min Date less 1 second is Sun Aug 17 07:12:54 GMT 292278994 1
Max Date is Sun Aug 17 07:12:55 GMT 292278994 1
これは、最小値と最大値を示しており、その間に最小値の 1 秒前に移動しようとするとどうなるかを示しています。つまり、ラップアラウンドします。
これはバージョン 1.6.0_17 でした。
これはうまくいくはずです:
GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));
GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));
各フィールド タイプ (年、月など) に対してCalendar.getMinimum()を呼び出してから、対応するフィールド タイプに最小値を設定することができます。これにより、最小のカレンダーが得られます。それを行うためのより速い方法があるかどうかはわかりません。