2016-04-29 5 views
-1

С Java 8Invalid LOCALDATE, когда он создал

я думал, чтобы получить 31 марта 2016 года с этой строки кода

System.out.println(LocalDate.now().withDayOfMonth(31).withMonth(3).withYear(2016)); 

я получаю исключение в потоке «основного» java.time.DateTimeException: Недействительная дата «APRIL 31»

+6

Переупорядочить 'withMonth' с помощью' withDayOfMonth'. Вы в настоящее время пытаетесь установить 31-й день в этом месяце, что в апреле. В апреле нет 31 дня. Вам не нужно использовать этот метод для установки даты, вместо этого используйте конструктор 'LocalDate'. –

+4

'LocalDate' [' of'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#of-int-int-int-) статический завод, но это одна и та же точка :) – Tunaki

ответ

1

Как отмечалось в комментарии, пропустив это в апреле 2016 года, вы пытались изменить дату на 31, которая не существует в текущем месяце апреля. Поэтому измените месяц до марта, прежде чем устанавливать день месяца.

Еще лучше, используйте статический метод of.

LocalDate localDate = LocalDate.of(2016 , 3 , 31); 

Или использовать enum постоянную Month.MARCH.

LocalDate localDate = LocalDate.of(2016 , Month.MARCH , 31); 
Смежные вопросы