Однако то, что должно быть простой строкой даты/времени, имеет причинил мне много беспокойства. Вот мой код:
Код: Выделить всё
String dateString = // user generated thing
// Remove whitespace for simplicity's sake
dateString = dateString.replaceAll("\\s+", "");
// There are A LOT of formats here, but I only pasted a small number of them for
// simplicity's sake, including the format in question
DateTimeFormatterBuilder formatBuilder = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ofPattern("[MM/dd/yyyy]" + "[MM/dd/yy]" +
"[MM/dd/yyyyhh:mma]" + "[MM/dd/yyyyh:mma]" + "[MM-dd-yyyyhh:mma]"));
DateTimeFormatter formatter = formatBuilder
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseCaseInsensitive()
.toFormatter();
LocalDateTime ldt = LocalDateTime.parse(dateString, formatter);
Код: Выделить всё
java.time.format.DateTimeParseException: Text '01/05/202403:41pm' could not be parsed, unparsed text found at index 8
Код: Выделить всё
java.time.format.DateTimeParseException: Text '01/05/2024 03:41 pm' could not be parsed, unparsed text found at index 10
Я подумал, возможно, с количеством форматов У меня есть (опять же, здесь показаны не все), возможно, было слишком много двусмысленности, поэтому я протестировал его, имея только форматы ММ/дд/гггг и «ММ/дд/гггг чч:мм а». (Для других дат мне нужен был первый ММ/дд/гггг). К сожалению, это тоже не сработало, поэтому я понятия не имею, что делать.
Подробнее здесь: https://stackoverflow.com/questions/790 ... mat-mapped
Мобильная версия