2010-08-19 2 views
3

При анализе дат и времени из документов XML в объекты JodaTime я использую общий набор утилит для конвертирования, как правило, используя синтаксические анализаторы и форматирования, предоставленные org.joda.time.format.ISODateTimeFormat.Анализ синтаксиса xs: дата с часовым поясом в Joda LocalDate

Это нормально работает в большинстве случаев, но на этот раз я вижу документы с xs:date значением формата 2010-08-19Z. Это вполне допустимое значение xs:date, но ни один из стандартных ISODateTimeFormat -генерированных парсеров LocalDate, которые я пробовал, примет его. Ближайший я могу найти ISODateTimeFormat.dateParser(), который примет довольно странно 2010-08-19TZ, но не 2010-08-19Z (обратите внимание T).

Это все очень раздражает, так как и Joda, и XML Schema должны строго придерживаться правил форматирования даты и времени ISO, но ни один из них не является, или спецификация нечеткая.

Перед тем, как я признаю поражение и ручной показ в специальном формате, может ли кто-нибудь указать мне на -сертифицированный парсер, который будет читать это значение?

ответ

1

Я считаю, что согласно ISO-8601, «Z» является частью значения времени. Сепаратор «T» используется только для создания комбинированных значений даты/времени. Строгое изложение этого означает, что «Z» не может появиться после даты без значения времени, которое может быть пустым, таким образом, «странно выглядящий» 2010-08-18TZ.

Это, по-видимому, небольшое несоответствие импеданса между определениями xs: date и ISO-8601.

EDIT: Я нашел копию ISO 8601. Он не определяет концепцию «датированной по времени даты», как определено в спецификации XML Schema Datatypes.

Вместо того, чтобы писать один с нуля, как насчет простой оболочки, которая преобразует xs: даты экземпляров с временными часами в соответствующие значения ISO-8601 (т. Е. Просто вставлять «T»), а затем использовать существующие ISODateTimeFormat.dateParser()?

+0

Так что спецификации не совсем совпадают. Great :( – skaffman

+0

Я думаю, что ISO-8601 был определен довольно много лет назад, задолго до XML-схем, и они, вероятно, не думали о датах так же строго, как в спецификации XML Schema. –

Смежные вопросы