空阵列位置得到几个月

时间:2013-09-24 13:15:01

标签: java

这是一个jdk / jre错误吗?当jdk7发布但我从未收到过反馈时,我报告了这一点,是否正常得到13个阵列?

String[] months = DateFormatSymbols.getInstance().getMonths();
System.out.println(months.length + " " + Arrays.toString(months));

输出: 13 [enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre,]

2 个答案:

答案 0 :(得分:7)

不是错误。看一下源代码的javadoc( java.text.DateFormatSymbols),它说:

  

月份字符串。例如:“January”,“February”等。数组   13个字符串(一些日历有13个月),索引   Calendar.JANUARY,Calendar.FEBRUARY等。

String months[] = null;

此外,getWeekdays()方法返回8个值,依此类推。

public final static int JANUARY = 0;
public final static int FEBRUARY = 1;
public final static int MARCH = 2;
public final static int APRIL = 3;
public final static int MAY = 4;
public final static int JUNE = 5;
public final static int JULY = 6;
public final static int AUGUST = 7;
public final static int SEPTEMBER = 8;
public final static int OCTOBER = 9;
public final static int NOVEMBER = 10;
public final static int DECEMBER = 11;
public final static int UNDECIMBER = 12;

API将UNDECIMBER描述为:字段,表示一年中的第13个月。虽然GregorianCalendar不使用此值,但是月历会这样做。

阅读here了解此类日历。

答案 1 :(得分:1)

您可以参考此页面:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/text/DateFormatSymbols.java

有些日历有13个月像农历,中国闰年,这就是为什么java保持这样的原因。

希望你的怀疑是明确的。