Java 日历中一年中的某个星期存在错误?

A bug in week of year in Java Calendar?

以下代码计算特定日期的工作周。

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 中做到这一点,假设周从星期一开始,这将适用于任何一年?

尝试将星期一设置为一周的第一天。

cal.setFirstDayOfWeek(Calendar.MONDAY);