Java日历,获取当前月份值,需要澄清

时间:2012-11-01 16:15:04

标签: java calendar

11月1日..

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

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

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

我缺少什么?

6 个答案:

答案 0 :(得分:23)

Java Calendar 中的月份 0索引。 Calendar.JANUARY不是字段,因此您不应将其传递给get方法。

答案 1 :(得分:14)

正如其他人所说Calendar.MONTH返回int并被归零。

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

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

returns NOV

答案 2 :(得分:12)

Calendar.getInstance().get(Calendar.MONTH);

是零基础,10是11月。来自javadoc;

  

public static final int MONTH   get和set的字段编号表示月份。这是一个   特定于日历的值。格里高利一年中的第一个月   朱利安的日历是1月1日,是0;最后取决于   一年中的月数。

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

不是明智之举,JANUARY的值为0,与ERA相同,您实际上是在调用;

Calendar.getInstance().get(Calendar.ERA);

答案 3 :(得分:3)

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

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

对于问题的第一部分,请注意,正如文件记载的那样,月份从0开始,所以10个实际上是11月。

答案 4 :(得分:2)

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);
    }
}

答案 5 :(得分:1)

使用Calendar.getInstance().get(Calendar.MONTH)+1获取当月。