2016-01-05 23 views
8

次のコードは、特定の日の勤務時間を計算します。Javaカレンダーの週のバグ?

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Calendar cal = new GregorianCalendar(); 
cal.setTime(df.parse("2015-12-27 08:00:00")); 
System.err.printf("%d.%02d\n", cal.getWeekYear(), cal.get(Calendar.WEEK_OF_YEAR)); 

現在、2016.01が印刷されています。

私は仕事の週番号の指定を理解しているので、2016.01は2016年の4日間を持つ最初の週ですが、12月27日がこの週に属することはできません。

Java 7でこれを行う方法はありますか?月曜日に週が始まると仮定して任意の年に動作しますか?

+5

週間のルールはどのようなロケールですか? – nos

+3

'cal.getMinimalDaysInFirstWeek()'と一緒に 'cal.getFirstDayOfWeek()'が返すものは何ですか? –

+0

@ JonSkeet、それは1に設定されていました。それを4に設定してください。 – Evgeny

答えて

6

月曜日の最初の曜日を設定してみてください。

cal.setFirstDayOfWeek(Calendar.MONDAY); 
+0

また、cal.setMinimalDaysInFirstWeek(4); – Evgeny

関連する問題