В Java 8 раз /JSR 310/threeten.org backport...
В: Как обрабатывать временные метки ISO-8601 с помощью "T" или пробела "" между частью даты и временной частью?
Формат ISO-8601 для временных меток указывает буква "T", чтобы отделить спецификацию даты от спецификации времени:
2015-05-12T15:42:00.123
Многие приложения генерируют временные метки в этом формате с пробелом '' char вместо 'T'. Ссылки показывают, что ISO-8601 позволяет это по взаимному согласию.
2015-05-12 15:42:00.123
Поскольку я глотаю данные из нескольких источников, я хочу разрешить либо "Т", либо пробел ".
Я заметил, что строка шаблона позволяет указать необязательные компоненты, но я не вижу способа указать "выбор" в строке шаблона...
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?
Спасибо заранее.