Продолжайте получать DateTimeParseException, может ли кто-нибудь определить, в чем проблема?JAVA

Программисты JAVA общаются здесь
Anonymous
Продолжайте получать DateTimeParseException, может ли кто-нибудь определить, в чем проблема?

Сообщение Anonymous »

У меня есть следующий метод Java (версия 8), который анализирует входную строку даты и времени, которая выглядит как '01-FEB-25 12.00.00.000000 AM UTC', чтобы получить что-то, что может понять база данных Oracle SQL, но Я продолжаю получать сообщение об ошибке «java.time.format.DateTimeParseException: текст '01-FEB-25 12.00.00.000000 AM UTC' не удалось проанализировать по индексу 3».
private String convertDateTime(String dateTimeInput) {
if (csDateTime != null) {
try {
// Incoming date time looks like '01-FEB-25 12.00.00.000000 AM UTC'
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MMM-yy hh.mm.ss.SSSSSS a z", Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

// Parse the input string into ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeInput, inputFormatter);

// Convert to LocalDateTime in UTC
LocalDateTime dateTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();

return dateTime.format(outputFormatter);
} catch (DateTimeParseException e) {
LOG.error("Failed to parse date: {}", dateTimeInput, e);
return null;
}
}
return null;
}

Я также попробовал приведенный ниже код, используя DateTimeFormatterBuilder, но он все равно не может проанализировать входную строку. Может ли кто-нибудь обнаружить проблему в моем коде и указать мне правильный путь? направление?
DateTimeFormatter inputFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd-MMM-yy hh.mm.ss.SSSSSS a z")
.optionalStart()
.appendFraction(ChronoField.NANO_OF_SECOND, 0, 6, true)
.optionalEnd()
.appendPattern(" a z") // AM/PM and time zone
.toFormatter(Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeInput, inputFormatter);
LocalDateTime dateTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();
return dateTime.format(outputFormatter);


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-issue-is

Вернуться в «JAVA»