Java Calendar Object减去一个月

时间:2013-11-26 10:15:44

标签: java date calendar

我正在尝试通过这样做来填充日历对象:

Date now = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
    cal.setTime(now);

现在是2013-11-26,但是当我打印出来时

cal.get(Calendar.MONTH)

它将返回10.

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

您无需修复它。这是Calendar行为。

cal.get(Calendar.MONTH)

您使用的是当前月份的System.currentTimeMillis()

返回10,因为月份从0开始。所以10月是第11个月。 I.e Nov

0-Jan
1-Feb
-
-

答案 1 :(得分:1)

请参阅Calendar.MONTH

的javadoc
  

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,因此对于NOV10

答案 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