Java Calendar Object减去一个月
我试图通过这样做来填充日历对象:
Date now = new Date(System.currentTimeMillis()); Calendar cal = Calendar.getInstance(); cal.setTime(now);
现在是2013-11-26,但是当我打印出来的时候
cal.get(Calendar.MONTH)
它将返回10。
我怎样才能解决这个问题?
你不需要修理它。 这是Calendar
行为。
cal.get(Calendar.MONTH)
您正在使用当前月份的System.currentTimeMillis()
。
返回10
因为月份从0
开始。 所以10月是第11个月。 即Nov
0-Jan 1-Feb - -
请参阅Calendar.MONTH的javadoc
get和set的字段编号表示月份。 这是特定于日历的值。 格列高利历和朱利安历的一年中的第一个月是1月,即0
使用为月定义的Calendar
常量:
if(cal.get(Calendar.MONTH) == Calendar.NOVEMBER) System.out.println("It's November.");
Calendar
的month字段从零开始,就像数组索引一样。
cal.get(Calendar.MONTH) + 1
– 编号从0开始
你正在打印正确
cal.get(Calendar.MONTH)
如果月份为1月它打印0
,那么对于NOV
, 10
相比之下, Joda-Time 2.3库提供了合理的月份数。 例如, December = 12
。
System.out.println( "Today's month number: " + new org.joda.time.DateTime(2013, 12, 28, 19, 0, 0).getMonthOfYear() );
跑的时候……
Today's month number: 12