为什么 calendar.get(Calendar.MONTH) 返回 10 而不是 12



Why

calendarCurrent = Calendar.getInstance(Locale.US);
calendarCurrent.get(Calendar.MONTH)

如果现在是 12,则返回 10?

月份索引从 0 开始,而不是从 1 开始,所以如果它返回 10 可能在美国区域设置中,它还没有 11

月份是从零开始的(一个不幸的设计决策,恕我直言),所以 0 表示 1 月,10 表示 11 月。现在是 12 月 1 日,但在某些时区可能仍然是 11 月 30 日。

我刚刚测试过它,它返回 11,这是 12 月,因为月份在[0, 11].

来自 javadoc :

month - 用于设置 MONTH 日历字段的值。月份值为 从 0 开始。例如,0 表示 1 月。

一切都很好。您可能在午夜前或非美国时区测试了它,不是吗?

最新更新