11月1日..
Calendar.getInstance().get(Calendar.MONTH); // prints 10 (October)
如果我们从 0 开始是有意义的,但似乎我们没有
Calendar.getInstance().get(Calendar.JANUARY); // prints 1
请问我错过了什么?
Java 日历中的月份是0 索引的。Calendar.JANUARY
不是一个字段,所以你不应该将它传递给get
方法。
正如其他人所说,Calendar.MONTH 返回 int 并且索引为零。
获取当前月份作为String
使用SimpleDateFormat.format()
方法
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
returns NOV
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);
用于Calendar.getInstance().get(Calendar.MONTH)+1
获取当前月份。
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);
}
}
Calendar.get
将标准日历字段之一作为参数,例如YEAR
或MONTH
不是月份名称。
Calendar.JANUARY
为 0,这也是 的值Calendar.ERA
,因此Calendar.getInstance().get(0)
将返回时代,在本例Calendar.AD
中为 1。
对于您问题的第一部分,请注意,正如广泛记录的那样,月份从 0 开始,因此 10 实际上是 11 月。