使用下面的代码
Calendar mCalendar = new GregorianCalendar();
mCalendar.set(Calendar.YEAR, 2014); // Set only year
mCalendar.set(Calendar.MONTH, Calendar.DECEMBER); // Don't change
mCalendar.set(Calendar.DAY_OF_MONTH, 31); // Don't change
int totalWeeks = mCalendar.get(Calendar.WEEK_OF_YEAR);
不必理会每月的30、28和29天.一年的最后一天(每年)始终是12月31日.因此,您需要设置这一天.而mCalendar.get(Calendar.WEEK_OF_YEAR)将返回该年的总周数.
动态更新
private int getTotalWeeksInYear(int year) {
Calendar mCalendar = new GregorianCalendar();
mCalendar.set(Calendar.YEAR, year); // Set only year
mCalendar.set(Calendar.MONTH, Calendar.DECEMBER); // Don't change
mCalendar.set(Calendar.DAY_OF_MONTH, 31); // Don't change
return mCalendar.get(Calendar.WEEK_OF_YEAR);
}
// Call as
int totalWeeks = getTotalWeeksInYear(2014);
在上面的代码中寻找错误.到时候您可以使用正常工作的以下代码
private int getTotalWeeksInYear(int year) {
Calendar mCalendar = new GregorianCalendar(TimeZone.getDefault());
mCalendar.setFirstDayOfWeek(Calendar.MONDAY);
// Workaround
mCalendar.set(year,
Calendar.DECEMBER,
31);
int totalDaysInYear = mCalendar.get(Calendar.DAY_OF_YEAR);
System.out.println(totalDaysInYear);
int totalWeeks = totalDaysInYear / 7;
return totalWeeks;
}