Этот отрывок из документации API объясняет, почему может возникнуть такая разница:
Значения, рассчитанные для WEEK_OF_YEAR
диапазон полей от 1 до 53. Неделя 1 для
год - самый ранний семидневный период
начиная с getFirstDayOfWeek (),
содержит как минимум
getMinimalDaysInFirstWeek () дней с
в этом году. Таким образом, это зависит от
значения getMinimalDaysInFirstWeek (),
getFirstDayOfWeek () и день
1 января.
А из исходного кода Calendar
:
И firstDayOfWeek, и minimalDaysInFirstWeek зависят от локали.
То есть это определяет локаль, а не часовой пояс! По-видимому, в некоторых локалях неделя 1 года начинается с предыдущего года. Попробуйте запустить это:
Calendar cal = new GregorianCalendar();
System.out.println(Locale.getDefault());
System.out.println(cal.getMinimalDaysInFirstWeek());
System.out.println(cal.getFirstDayOfWeek());
Могу поспорить, что либо вы используете разные версии в разных локалях, либо данные локали менялись между этими версиями. Результат «1» может быть даже более правильным и из-за ошибки в данных локали.