LocalDateTime.toString - можно ли настроить формат в среде? - PullRequest
0 голосов
/ 21 января 2020

У меня есть код, который сохраняет LocalDateTime в виде строки, используя myTime.toString. Он преобразуется обратно с помощью конвертера Spring для преобразования из String в LocalDateTime. Никакого форматирования нигде нет, он настроен на использование системного значения по умолчанию.

В одной среде его читают, потому что по умолчанию используется неправильный формат (2019-03-01T11:51:07.017)

Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDateTime] for value '2020-01-13T07:00'; nested exception is java.time.format.DateTimeParseException: Text '2020-01-13T07:00' could not be parsed at index 16

Есть ли какая-либо общесистемная конфигурация этого свойства или я должен просто везде явно отформатировать?

1 Ответ

2 голосов
/ 21 января 2020

Существует ли какая-либо общесистемная конфигурация этого свойства…

Нет.

Формат, полученный с помощью LocalDateTime.toString(), фиксирован, вы не можете его изменить ни в коем случае. Из документации:

На выходе будет один из следующих форматов ISO-8601:

  • uuuu-MM-dd'T'HH:mm
  • uuuu-MM-dd'T'HH:mm:ss
  • uuuu-MM-dd'T'HH:mm:ss.SSS
  • uuuu-MM-dd'T'HH:mm:ss.SSSSSS
  • uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS

Используемый формат будет самым коротким, который выводит полное значение времени, когда пропущенные части подразумеваются равными нулю.

Таким образом, единственный способ повлиять на формат - контролировать, есть ли в вас секунды или доли секунды LocalDateTime.

… или я должен просто явно везде форматировать?

Я не уверен, поможет ли это вам. Как сказал Андреас в комментарии, одно-аргумент LocalDateTime.parse() отлично разбирает 2020-01-13T07:00 и 2019-03-01T11:51:07.017. Единственное объяснение вашей проблемы, которое я могу придумать, заключается в том, что для анализа используется какой-либо другой форматер, отличный от стандартного.

Ссылка

...