GregorianCalendar 的最大值和最小值是多少?
它们是像 Integer.MAX_VALUE 这样的常量,还是 GregorianCalendar.get(BLAH)?
简而言之,如何创建具有最小值/最大值的 GregorianCalendar 实例?
GregorianCalendar 的最大值和最小值是多少?
它们是像 Integer.MAX_VALUE 这样的常量,还是 GregorianCalendar.get(BLAH)?
简而言之,如何创建具有最小值/最大值的 GregorianCalendar 实例?
这应该有效:
GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));
GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));
我接受了 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.6.0_17。
您可以尝试为每种类型的字段(即年、月等)调用Calendar.getMinimum(),然后在相应的字段类型上设置这些最小值。这会给你最小的日历。我不知道是否有更快的方法来做到这一点。