2014年6月的几个星期

rur*_*kyi 0 java calendar week-number

很抱歉提出愚蠢问题,但我无法获得日历返回的2014年6月的正确周数:

public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.MONTH, Calendar.JUNE);
    calendar.set(Calendar.YEAR, 2014);
    calendar.setFirstDayOfWeek(Calendar.MONDAY);
    System.out
        .println("first day of week: " + calendar.getFirstDayOfWeek());
    System.out.println("weeks in month: "
        + calendar.getActualMaximum(Calendar.WEEK_OF_MONTH));
    System.out.println("days in month: "
        + calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
}
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

first day of week: 2
weeks in month: 5
days in month: 30
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么2014年6月的周数不是6?我在Mac OS X 10.9.3上使用jdk1.8.0_05.

Sot*_*lis 7

一周的定义取决于每个Locale(国家,地区,等等)定义为一周的第一天.你可以检查一下Calendar#getFirstDayOfWeek().它还取决于它认为第一周的最小天数应该是什么.你可以用它Calendar#getMinimalDaysInFirstWeek().您Locale似乎表明,需要超过一天的时间来考虑一周的这段时间.

例如,Locale.CANADAgetMinimalDaysInFirstWeek()返回以来,我得到6周1.