这是 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、octube、noviembre、diciembre、]
不是错误。查看源代码的javadoc( java.text.DateFormatSymbols),它说:
月份字符串。例如:“一月”、“二月”等。 数组 13 个字符串(某些日历有 13 个月), 索引为 日历.一月、日历.二月等
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 不使用此值,但农历却使用此值。
请阅读此处了解此类日历。
您可以参考这个页面:
有些日历有 13 个月,例如农历,中国闰年,这就是为什么 java 保持这样。
希望您的疑问已经清楚。