我正在尝试通过这样做来填充日历对象:
Date now = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.setTime(now);
现在是2013-11-26,但是当我打印出来时
cal.get(Calendar.MONTH)
它将返回10.
我该如何解决这个问题?
答案 0 :(得分:2)
您无需修复它。这是Calendar
行为。
您使用的是当前月份的System.currentTimeMillis()
。
返回10
,因为月份从0
开始。所以10月是第11个月。 I.e Nov
0-Jan
1-Feb
-
-
答案 1 :(得分:1)
get和set的字段编号,表示月份。这是特定于日历的值。格里高利历和朱利安历的一年中的第一个月是1月,这是0
答案 2 :(得分:1)
使用为月份定义的Calendar
常量:
if(cal.get(Calendar.MONTH) == Calendar.NOVEMBER)
System.out.println("It's November.");
Calendar
的月份字段从零开始,就像数组索引一样。
答案 3 :(得分:0)
cal.get(Calendar.MONTH) + 1
- 编号从0开始
答案 4 :(得分:0)
您正在打印正确
cal.get(Calendar.MONTH)
如果月份为JAN
则会打印0
,因此对于NOV
,10
答案 5 :(得分:0)
相比之下,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