DAY_OF_WEEK
1 не означает первый день недели.
Как в javadoc для DAY_OF_WEEK
сказано:
Номер поля для полученияи установите с указанием дня недели.Это поле принимает значения SUNDAY
, MONDAY
, TUESDAY
, WEDNESDAY
, THURSDAY
, FRIDAY
и SATURDAY
.
Константа SUNDAY
имеет значение 1, поэтому DAY_OF_WEEK
1 означает воскресенье.
Чтобы указать первый день недели, вам нужно позвонить getFirstDayOfWeek()
:
Получает, чтопервый день недели есть;например, SUNDAY
в США, MONDAY
во Франции.
Итак:
int year = 2019;
int week = 5;
Calendar cal = Calendar.getInstance(Locale.US);
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.WEEK_OF_YEAR, week);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
System.out.println(cal.getTime());
cal = Calendar.getInstance(Locale.FRANCE);
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.WEEK_OF_YEAR, week);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
System.out.println(cal.getTime());
Выход
Sun Jan 27 00:00:00 EST 2019
Mon Jan 28 00:00:00 EST 2019
В обоих случаях вы получаете январь.
Выходные данные за неделю 14
Sun Mar 31 00:00:00 EDT 2019
Mon Apr 01 00:00:00 EDT 2019
Здесь языковой стандарт имеет значение, для какого месяца вы получаете.