Как я могу узнать часовой пояс Зулу в Java DateUtils.parseDate? - PullRequest
16 голосов
/ 08 января 2009

У меня есть даты в формате 2008-12-23T00:00:00Z. Это очень похоже на формат ISO 8601 с часовым поясом Zulu (UTC). Я думал, что следующий код проанализирует его (используя commons-lang ):

String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });

Если я беру тот же шаблон (yyyy-MM-dd'T'HH:mm:ssZZ), но удаляю часовой пояс, он работает.

Знаете ли вы, как я могу распознать часовой пояс Зулу? У меня есть доступ только к Java 1.4 и Jakarta commons-lang. Нет Время Joda для меня пока ...

Ответы [ 2 ]

46 голосов
/ 08 января 2009

Я думаю, что commons-lang использует встроенный в Java DateFormat или SimpleDateFormat, который создает исключение ParseException для вашей даты. Если все ваши входные строки заканчиваются завершающим Z, вы можете использовать это:

<code>
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
// explicitly set timezone of input if needed
df.setTimeZone(java.util.TimeZone.getTimeZone("Zulu"));
java.util.Date date = df.parse("2008-12-23T00:00:00Z");
4 голосов
/ 08 января 2009

Похоже на ошибку в FastDateFormat. Расскажите им об этом, и вы должны в конечном итоге получить исправление. До этого вы можете попытаться предварительно обработать даты и заменить 'Z' на '+ 00'

...