Этот код
LocalDate date = LocalDate.of(2019, 4, 31);
Выдает эту ошибку:
java.time.DateTimeException: Invalid date 'APRIL 31'
Мне нужно построить дату на основе заданного количества дней, в данном случае 31, но поскольку в апреле всего 30 дней, я получаю исключение. В приведенном выше примере я должен получить 1 мая, возможно ли это сделать с библиотекой java.time
или нужно кодировать вручную?
Да, так и будет, спасибо за идею
но имейте в виду, что это дано 2 мая
Да, я знаю, нужно от количества дней отнять 1
@ОлеВ.В. Хорошая идея, сделано.
Как я упоминал в комментариях, было бы проще, если бы вы добавили дни к базовой дате, например так:
LocalDate.of(2019,4,1).plusDays(31);
Если вы действительно хотите это сделать, вы можете попробовать это вместо plusDay:
LocalDate.parse("2018-04-31", DateTimeFormatter.ISO_LOCAL_DATE.withResolverStyle(ResolverStyle.LENIENT))
Он дает 2018-05-01
по запросу. Поскольку задающий вопрос представляет собой три целых числа, а не строку, в данном случае это кажется не очень важным.
Вероятно, было бы проще, если бы вы добавляли дни к базовой дате, верно? Нравится
LocalDate.of(2019,4,1).plusDays(31);