Как узнать часовой пояс Zulu в Java DateUtils.parseDate?

У меня есть даты в формате 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. У меня пока нет Джода Тайм ...

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
17
0
35 856
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Хорошо, я попробую. Я не смогу перейти на новую версию commons-lang раньше, чем через несколько лет ;-), но это может помочь кому-то другому ...

Guillaume 08.01.2009 18:15

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


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");

+1 ... Мне всегда приходится искать эту хрень, когда я не использую JodaTime

iandisme 03.08.2010 23:02

Другие вопросы по теме