В Java 8 раз/JSR 310/threeten.org портировать ...Как работать с «необязательным» T в метке времени ISO-8601 в Java 8/JSR 310/threeten.org?
Q: Как разобрать ISO-8601 метки времени или с «T» или пробел «» между датой частью и времени часть?
формат ISO-8601 для временных меток определяет буквальный «T», чтобы отделить спецификацию даты от времени спецификации:
2015-05-12T15:42:00.123
Многих приложений генерировать временные метки в этом формате с пробелом «» полукокс вместо ' Т». Ссылки показывают, что ISO-8601 допускает это по соглашению .
2015-05-12 15:42:00.123
Поскольку я глотание данных из нескольких источников, которые я хочу, чтобы либо «T» или пространство «».
Я наблюдаю, что строка шаблона позволяет указать дополнительные компоненты, но я не вижу какой-либо способ определения «выбора» в строке шаблона ...
Q: Есть ли способ, чтобы сделать «выбрать-точно-один-из-следующего» в строке шаблона JSR 310?
Я был в состоянии получить эту работу путем построения DateTimeFormatter с двумя дополнительными узорами:
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss.SSS").optionalEnd()
.toFormatter();
Видя optionalStart() и optionalEnd() привел меня к:
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendPattern("[yyyy-MM-dd HH:mm:ss.SSS][yyyy-MM-dd'T'HH:mm:ss.SSS]")
.toFormatter();
Однако, Я не уверен, что это правильно способ справиться с этой ситуацией ...
В: Что такое Лучшее решение решение для обработки нескольких шаблонов DateTime?
Заранее спасибо.
Пожалуйста, попробуйте конденсироваться три вопроса в один, для наглядности. Кроме этого, очень хороший вопрос. –
Просто обратите внимание, что java.time не имеет специального способа обработки двух параметров во время разбора, таких как «» или «T». Это было бы разумным дополнением к API. Два вышеупомянутых решения будут успешно анализировать пустую строку или строку с двумя датами, поэтому вам нужно проверить их. – JodaStephen
> будет успешно разбирать пустую строку или строку с двумя датами - . Меня беспокоило разбор двух дат ... не понимал, что также будет проходить пустая строка. Я напишу еще несколько тестов. Благодарю. –