Попытка преобразовать строку в localDateTime и посмотреть, старше ли дата года. Я знаю, что это должно работать, но это не работает. Получение исключений синтаксического анализа по индексу 'i'
LocalDateTime currentTimeLastYear = LocalDateTime.now().minusYears(1);
String pattern = "MM/dd/yyyy'T'HH:mm:s";
// ex "8/30/2019T15:51:5"
String queryToDate = query.getDateRange().getToDate();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.parse(queryToDate, formatter);
System.out.println(localDateTime);
if (localDateTime.isBefore(currentTimeLastYear)) {
return true;
}
Используйте String pattern = "M/dd/yyyy'T'HH:mm:s";




Используйте одну букву в своем шаблоне форматирования для каждой части, где однозначные числовые значения пропускают нуль заполнения.
Если месяц 8 вместо 08, используйте M вместо MM.
Это объясняется в документации Javadoc:
Если количество букв равно единице, то значение выводится с использованием минимального количества цифр и без заполнения. В противном случае в качестве ширины выходного поля используется количество цифр, при необходимости значение дополняется нулями.
String input = "8/23/2021T1:23:7"
DateTimeFormatter f = DateTimeFormatter.ofPattern( "M/d/uuuu'T'H:m:s" ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
Посмотрите, как этот код запускается в прямом эфире на IdeOne.com.
ldt.toString() = 2021-08-23T01:23:07
Совет: информируйте издателя ваших данных о соответствии ISO 8601 и всегда используйте нулевой отступ. Ваш ввод, похоже, использует неудачную попытку ISO 8601.
Понятно. Я довольно новичок в java. Быстрый вопрос, если вы не возражаете: использование одной буквы работает, как вы объяснили, но будут ли исключены миллисекунды, если они присутствуют, и шаблон «M/d/uuuu'T'H:m:s»: 2020-12- 14T23:38:46.269
@Gunther Вы не упомянули ни доли секунды в своем вопросе. Вы действительно должны привести пример ввода там.
Попробую сначала поискать, а потом спрашивать. Мне было просто любопытно. Вы ответили на мой изначальный вопрос. Спасибо
@Gunther Ищите перед публикацией. Большинство основных вопросов об обработке даты и времени уже неоднократно задавались и на них отвечали в Stack Overflow.
Формат строки даты явно не
MM/dd/yyyy. ДвеMозначают, что если месяц является однозначной цифрой, впереди будет 0.