Java:GregorianCalendar的最大值和最小值是什么/在哪里?

Wae*_*elJ 3 java calendar gregorian-calendar

GregorianCalendar的最大值和最小值是多少?

它们是一个常数,如Integer.MAX_VALUE,还是GregorianCalendar.get(BLAH)?

简而言之,如何创建具有最小/最大值的GregorianCalendar实例?

cod*_*ger 5

这应该工作:

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

GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));
Run Code Online (Sandbox Code Playgroud)

  • pajton,检查:<code> migc.get(Calendar.ERA)</ code> 0表示BC 1表示AD所以年份292269055对应于292269055 BC (4认同)
  • 不幸的是,您的解决方案无效.在mingc.setTime(new Date(Long.MIN_VALUE))之后,你得到:migc.get(Calendar.YEAR)== 292269055或者像这样.这对我来说听起来不像: - ). (2认同)

mar*_*ton 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
Run Code Online (Sandbox Code Playgroud)

其中显示了最小值和最大值,并且它们之间是一个指示,如果您尝试在最小值之前移动到第二个,那么会发生什么 - 您可以回绕.

这是版本1.6.0_17.