Получить номер недели 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.