Calendar.getActualMaximum(Calendar.WEEK_OF_YEAR)を使用して、特定の年の合計週数を取得しています。これは私が使用しています関数です。calendar.getActualMaximum(Calendar.WEEK_OF_YEAR)は、1月11日に52を返し、12月に53を返します。
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);
}
Output with c.set(year, 12, 31): Year : 2012, Total Weeks : 52 Year : 2013, Total Weeks : 52 Year : 2014, Total Weeks : 52 Year : 2015, Total Weeks : 52 Year : 2016, Total Weeks : 53
Output with c.set(year, 1, 31): Year : 2012, Total Weeks : 53 Year : 2013, Total Weeks : 52 Year : 2014, Total Weeks : 52 Year : 2015, Total Weeks : 52 Year : 2016, Total Weeks : 52
私はカレンダーの月が、私が使用して試してみました12月に設定されている場合、年間の総週間が異なっているなぜそれを把握することができません1〜12ヵ月、1〜11ヵ月の週数は同じですが、12ヵ月間は変化します。実験から、私は閏年でしか起こらないと予測できます。
私は、次のリンク参照していた:Calendar.getActualMaximum(Calendar.WEEK_OF_YEAR) weirdness
をしかし、これは私のクエリに応答しません。
フンを正確な数週間を計算します。 Javaは例外をスローする必要があります。 – arcy
@Peter:ありがとう。あなたは正しいです。しかし、私が11月(今月の2016年12月)を使用した場合は52週間、2016年は53週間です。総週数を取得する正しい方法は何ですか? –