周月2014年6月
问题描述:
对不起,问愚蠢的问题,但我不能让周的正确数目2014年6月的日历返回:周月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。
答
一周的定义取决于每个Locale
(国家,地区,无论什么)定义为一周中的第一天。你可以用Calendar#getFirstDayOfWeek()
来检查。这也取决于它认为在第一周的最短日期应该是多少。你可以通过Calendar#getMinimalDaysInFirstWeek()
获得。你的Locale
似乎表明,它需要一天以上才能考虑这一周的这段时间。
例如,对于Locale.CANADA
,自getMinimalDaysInFirstWeek()
返回1
以来,我获得了6周。
我也尝试用Locale.UK创建日历。 – ruruskyi