Получить неделю. Число LocalDate (Java 8)

Я пытаюсь получить неделю номер полного LocalDate с форматом:

dd.MM.yyy

Я не нашел функцию в Java 8 Date API, которая возвращает номер недели, и я попытался создать алгоритм, но он не работал.

Ответы

Ответ 1

Одно небольшое предупреждение. Я еще не тестировал это, но, глядя на документацию 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());

Ответ 2

Ответ Марка Роттевеля почти прав и снова пример того, какой вид беспорядка существует в классе WeekFields (аналогичные имена метода звучания, но отклоняются от интуитивного гражданского использования). Для правильного кода требуется другое поле:

LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear(); 
int weekNumber = date.get(woy);

См. Также аналогичные дебаты по этому SO-сообщению, особенно обсуждение и комментарии по поводу ответа @kleopatra.