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




Похоже на ошибку в FastDateFormat commons-lang. Расскажите им об этом, и в конечном итоге вы получите исправление. А пока вы можете попытаться предварительно обработать даты и заменить «Z» на «+00».
Я думаю, что 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
Хорошо, я попробую. Я не смогу перейти на новую версию commons-lang раньше, чем через несколько лет ;-), но это может помочь кому-то другому ...