18

11月1日..

  Calendar.getInstance().get(Calendar.MONTH); // prints 10 (October)

如果我们从 0 开始是有意义的,但似乎我们没有

  Calendar.getInstance().get(Calendar.JANUARY); // prints 1

请问我错过了什么?

4

6 回答 6

29

Java 日历中的月份0 索引的。Calendar.JANUARY不是一个字段,所以你不应该将它传递给get方法。

于 2012-11-01T16:18:53.163 回答
16

正如其他人所说,Calendar.MONTH 返回 int 并且索引为零。

获取当前月份作为String使用SimpleDateFormat.format()方法

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));

returns NOV
于 2012-11-01T16:24:20.137 回答
14
Calendar.getInstance().get(Calendar.MONTH);

从零开始,10 是 11 月。来自javadoc;

public static final int MONTH get 和 set 字段编号,表示月份。这是特定于日历的值。公历和儒略历中的第一个月是 JANUARY,即 0;最后一个取决于一年中的月数。

Calendar.getInstance().get(Calendar.JANUARY);

这不是明智之举, for 的JANUARY值为 0,这与 相同ERA,您正在有效地调用;

Calendar.getInstance().get(Calendar.ERA);
于 2012-11-01T16:22:12.827 回答
11

用于Calendar.getInstance().get(Calendar.MONTH)+1获取当前月份。

于 2016-10-18T06:58:24.740 回答
4
import java.util.*;

class GetCurrentmonth
{
    public static void main(String args[])
    {
        int month;
        GregorianCalendar date = new GregorianCalendar();      
        month = date.get(Calendar.MONTH);
        month = month+1;
        System.out.println("Current month is  " + month);
    }
}
于 2015-10-20T02:44:06.197 回答
3

Calendar.get将标准日历字段之一作为参数,例如YEARMONTH不是月份名称。

Calendar.JANUARY为 0,这也是 的值Calendar.ERA,因此Calendar.getInstance().get(0)将返回时代,在本例Calendar.AD中为 1。

对于您问题的第一部分,请注意,正如广泛记录的那样,月份从 0 开始,因此 10 实际上是 11 月。

于 2012-11-01T16:19:00.527 回答