【发布时间】:2016-04-06 12:03:58
【问题描述】:
我正在使用 calendar.getActualMaximum(Calendar.WEEK_OF_YEAR) 来获取给定年份的总周数。这是我正在使用的功能:
public static void main(String[] args) {
for(int i=2012; i<=2016; i++) {
System.out.println("Year : " + i + ", Total Weeks : " + getNumWeeksForYear(i));
}
}
public static int getNumWeeksForYear(int year) {
Calendar c = Calendar.getInstance();
c.set(year, 12, 31); //issue
c.setFirstDayOfWeek(Calendar.MONDAY );
return c.getActualMaximum(Calendar.WEEK_OF_YEAR);
}
c.set(year, 12, 31) 的输出:
年份 : 2012, 总周数 : 52
年份 : 2013, 总周数 : 52
年份 : 2014, 总周数 : 52
年份 : 2015, 总周数 : 52
年份 : 2016, 总周数 : 53
c.set(year, 1, 31) 的输出:
年份 : 2012, 总周数 : 53
年份 : 2013, 总周数 : 52
年份 : 2014, 总周数 : 52
年份 : 2015, 总周数 : 52
年份 : 2016, 总周数 : 52
当日历月设置为 12 月时,我无法弄清楚为什么一年中的总周数会有所不同。我尝试使用 1-12 月,对于 1-11 月,周数相同但更改为12 月。从实验中我可以预测它只发生在闰年。
我参考了以下链接:Calendar.getActualMaximum(Calendar.WEEK_OF_YEAR) weirdness
但这并不能回答我的问题。
【问题讨论】: