很抱歉提出愚蠢的问题,但我无法在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
为什么2014年6月的周数不是6?我在Mac OS X 10.9.3上使用jdk1.8.0_05。
答案 0 :(得分:7)
一周的定义取决于每个Locale
(国家,地区,等等)定义为一周的第一天。您可以使用Calendar#getFirstDayOfWeek()
进行检查。它还取决于它认为第一周的最小天数应该是什么。您可以使用Calendar#getMinimalDaysInFirstWeek()
获得该功能。您的Locale
似乎表明每周需要超过一天的时间来考虑这段时间。
例如,对于Locale.CANADA
,我会在getMinimalDaysInFirstWeek()
返回1
后的6周内完成。