#java #parsing #datetime #jodatime
#java #синтаксический анализ #дата-время #jodatime
Вопрос:
У меня есть строка:
Sun May 15 00:00:00 IST 2011
Теперь, если я хочу разобрать ее в joda DateTime по шаблону:
EEE MMM dd 00:00:00 z yyyy
Я получаю:
java.lang.IllegalArgumentException: Invalid format: "Sun May 15 00:00:00 IST 2011" is malformed at " 00:00:00 IST 2011"
Но SimpleDateFormat с тем же шаблоном может разобрать эту строку в java.util.Date. Что я делаю не так?
Спасибо и с уважением.
Комментарии:
1. вы уверены, что не указали
HH:mm:ss
при использованииSimpleDateFormat
?2. @asgs да, шаблон одинаков для обоих средств форматирования.
Ответ №1:
JODA не поддерживает синтаксический анализ названий часовых поясов.
Из документации API:
Названия зон: названия часовых поясов (‘z’) не могут быть проанализированы.
Комментарии:
1. Спасибо. Итак, чтобы разобрать эту строку, я должен разобрать ее в Date с помощью SimpleDateFormat, а затем создать экземпляр DateTime с этой даты?
2. Вероятно, лучшим подходом было бы изменить формат вашей строки временной метки. Проблема в том, что названия часовых поясов неоднозначны, например, «IST» используется для ирландского летнего времени, израильского стандартного времени и индийского стандартного времени. Даже если вы используете java.util.SimpleDateFromat, вы не можете быть уверены, что действительно получите то, что ожидаете.