Как интерпретировать эти метки времени?

Я пытаюсь разобрать отметки времени, написанные в некоторых xml файлах. Большинство марок времени - это что-то вроде 2009-07-22-07: 00, но иногда я нахожу их чем-то вроде 2009-07-22Z или 2009-07-22z. Пожалуйста, помогите мне, как интерпретировать эти Zs и как их анализировать. Я считаю, что эти z или Z связаны с часовым поясом. Любые обходные пути для их синтаксического анализа так же, как типичные отметки времени?

Ответ 1

Чтобы добавить к ответу fvu: Java, к сожалению, не имеет встроенного метода для синтаксического анализа (или форматирования формата даты и времени ISO8601, и, еще более, к сожалению, невозможно (легко) разобрать даты ISO8601 с java.text.SimpleDateFormat.

Известная и популярная библиотека Joda Time имеет хорошую поддержку для дат и времени ISO8601.

Изменить. Начиная с Java 5, в стандартном API существуют классы для анализа и форматирования дат и времени в стандартном формате, часто используемом в XML-документах. Чтобы проанализировать дату:

import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

// ...

String dateString = "..."; // wherever you get this from
XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateString);

Calendar cal = xcal.toGregorianCalendar();
Date date = cal.getTime();

Также существуют методы форматирования дат в строки. Подробнее см. Документацию API этих классов.

Ответ 2

Z означает Zulu. Вы правы, он представляет часовой пояс - в частности UTC.

Ответ 3

Ты прав. Обратный символ относится к часовому поясу.

Z относится к часовому поясу "Зулу", который является только сокращением для часовой пояс UTC (или GMT).

Вы также можете увидеть трейлинг + X или -X. Они относятся к смещению GMT для метки времени. например 2002-05-30+06:00 указывает, что время GMT + 6 часов и нулевые минуты.

Ответ 4

XML использует ISO8601 форматы времени, так что стандарт - это первое место, где можно искать все вещи, скрытые по таймеру в XML.