API даты и времени Java - я хочу вернуть недействительный 20240230 в качестве вывода 20240230, но вместо этого получить JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 API даты и времени Java - я хочу вернуть недействительный 20240230 в качестве вывода 20240230, но вместо этого получить

Сообщение Anonymous »


String valueDate(String valueDate_yyyyMMdd) {
final DateTimeFormatter DATE_FORMATTER_YYYYMMDD = DateTimeFormatter.ofPattern("yyyyMMdd")
try {
final LocalDate valueDate = LocalDate.parse(StringUtils.trim(valueDate_yyyyMMdd), DATE_FORMATTER_YYYYMMDD);
return DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH).format(valueDate);
} catch (Exception e) {
log.warn("failed to convert {} into ddMMMyyyy format", valueDate_yyyyMMdd, e);
return valueDate_yyyyMMdd;
}
}

Например, когда я ввожу неверную дату, я надеюсь, что метод сможет вернуть введенное мной значение вместо того, чтобы изменить его на действительную дату.
Например, если в приведенном выше методе я передам ему 20240230, результатом будет 28 февраля 2024. Число «28» неожиданное. Что ожидается? Поскольку 20240230 является недопустимой датой, при его анализе должно быть выдано исключение, а затем выполняется команда catch, поэтому, наконец, входные данные возвращаются.
Я просмотрел этот документ Java 8 LocalDateTime анализирует неверную дату и время и улучшает мой код:
String valueDate(String valueDate_yyyyMMdd) {
try {
DateTimeFormatter DATE_FORMATTER_YYYYMMDD = DateTimeFormatter
.ofPattern("yyyyMMdd", Locale.US)
.withResolverStyle(ResolverStyle.STRICT);
final LocalDate valueDate = LocalDate.parse(StringUtils.trim(valueDate_yyyyMMdd), DATE_FORMATTER_YYYYMMDD);
return DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH).format(valueDate);
} catch (Exception e) {
log.warn("failed to convert {} into ddMMMyyyy format", valueDate_yyyyMMdd, e);
return valueDate_yyyyMMdd;
}
}

Но на этот раз он не может обработать 20230101. Выдается исключение:
java.time.format.DateTimeParseException: Text '20230101' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {YearOfEra=2023, DayOfMonth=1, MonthOfYear=1},ISO of type java.time.format.Parsed


Подробнее здесь: https://stackoverflow.com/questions/789 ... but-instea
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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