от календарной недели до java.time.ZonedDateTime - PullRequest
0 голосов
/ 05 июня 2019

С помощью java.time.ZonedDateTime вы можете получить календарную неделю (скажем, неделю 1).

import java.time.ZonedDateTime;

int getCalendarWeek(ZonedDateTime zonedDateTime){
   int week = zonedDateTime.get ( IsoFields.WEEK_OF_WEEK_BASED_YEAR );
   return week;
}

С указанием года и календарной недели (например, 2019 и 20 недели), как можновы возвращаете java.time.ZonedDateTime?

Первый день (понедельник) календарной недели - это дата.Какой бы час.

ZonedDateTime getZonedDateTime(int year, int weekNumber){
// ???
}

1 Ответ

3 голосов
/ 05 июня 2019

Вы можете использовать операцию with в ZonedDateTime, чтобы получить дату, основанную на конкретной неделе.Класс WeekFields обеспечивает доступ к TemporalFields, необходимому для этого.См. Приведенный ниже пример:

int week = 1;
int year = 2016;
WeekFields weekFields = WeekFields.of(Locale.getDefault());
ZonedDateTime ldt = ZonedDateTime.now()
                        .withYear(year)
                        .with(weekFields.weekOfYear(), week)
                        .with(weekFields.dayOfWeek(), 1);

Обратите внимание, что это не решает проблему с часовым поясом, так как он принимает системный часовой пояс по умолчанию.

...