2014年6月的几个星期

时间:2014-06-07 16:04:01

标签: 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));
}

我得到了:

first day of week: 2
weeks in month: 5
days in month: 30

enter image description here

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

1 个答案:

答案 0 :(得分:7)

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

例如,对于Locale.CANADA,我会在getMinimalDaysInFirstWeek()返回1后的6周内完成。