Получить номер недели LocalDate (Java 8) [дубликат]
этот вопрос уже есть ответ здесь:
Я пытаюсь получить номер недели полного LocalDate с форматом:
dd.MM.yyy
Я не нашел функцию в API даты Java 8, которая возвращает номер недели, и я попытался создать алгоритм, но он не работает.
2 ответов
одно маленькое предупреждение. Я еще не тестировал это, но глядя на документацию API WeekFields
и LocalDate.get
, вы должны сделать что-то вроде:
LocalDate date = ...;
// Or use a specific locale, or configure your own rules
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
ответ Марк Rotteveel почти прямо и снова пример, какая путаница потенциал есть в классе WeekFields
(похожие имена методов звучания, но отклоняющиеся от интуитивного гражданского использования). Правильный код требует другого поля:
LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
int weekNumber = date.get(woy);
см. также аналогичные дебаты по этому вопросу SO-post, особенно Обсуждение и комментарии по поводу ответа @kleopatra.