Java的Calendar.DAY_OF_WEEK_IN_MONTH最大值是6.这是正确的吗?

use*_*660 8 java calendar

正如标题所述,创建一个java.util.GregorianCalendar对象,让我们说日历,然后运行

calendar.getMaximum(Calendar.DAY_OF_WEEK_IN_MONTH)
Run Code Online (Sandbox Code Playgroud)

它返回6!据我所知,这应该是5,因为 calendar.getMaximum(Calendar.DAY_OF_MONTH) 等于31和31/7 == 4剩余,即最多5周,因此一个月最多可以发生5次.

我在这里错过了什么吗?

Mif*_*eet 2

javadoc指出

例如,如果一个月有 31 天,则 DAY_OF_WEEK_IN_MONTH -1 将与 DAY_OF_WEEK_IN_MONTH 5 和 4 的末尾重叠。

这承认最大值可以是 5。为了有理由使用值 6,必须有一个月有 36 天,即使进行日期/时间更正,这种情况也不应该发生。至少我还没有找到类似的检查有关公历的信息。

所以是的,最大值应该是 5。


编辑:我还检查了参考实现的来源,没有理由选择值 6。