3

グレゴリオ暦の最大値と最小値はどれくらいですか?

それらはInteger.MAX_VALUEのような定数ですか、それともGregorianCalendar.get(BLAH)ですか?

一言で言えば、最小/最大値でGregorianCalendarインスタンスを作成するにはどうすればよいですか?

4

4 に答える 4

5

私は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 でした。

于 2010-03-06T16:18:36.850 に答える
5

これはうまくいくはずです:

GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));

GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));
于 2010-03-06T16:01:32.180 に答える
4

各フィールド タイプ (年、月など) に対してCalendar.getMinimum()を呼び出してから、対応するフィールド タイプに最小値を設定することができます。これにより、最小のカレンダーが得られます。それを行うためのより速い方法があるかどうかはわかりません。

于 2010-03-06T15:52:25.213 に答える