Чтобы правильно обрабатывать xs:dateTime с JAXB, я должен написать свой собственный конвертер от String
->java.time.OffsetDateTime
.xsd: dateTime to Java OffsetDateTime
Как указано в определении схемы XML, dateTime был основан на ISO 8601. Я использовал OffsetDateTime.parse(s, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
для анализа xs:dateTime
, который отлично работает, например.
"2007-12-03T10:15:30+01:00" //or
"2007-12-03T10:15:30Z"
К сожалению, в xs:dateTime
смещение части is declared optional, поэтому разбор действительного
"2016-03-02T17:09:55"
бросает DateTimeParseException
.
Есть ли DateTimeFormatter
для OffsetDateTime, который также обрабатывает unzoned xs:dateTime
s (возможно, с часовым поясом по умолчанию)?
Ах, поэтому, когда смещение отсутствует, вы интерпретируете дату-время в часовом поясе JVM. Я думаю, что я бы использовал 'localDateTIme.atZone (ZoneId.systemDefault()). ToOffsetDateTime()'. Разве это немного легче читать? –