2013-04-03 1 views
5

Twitter дает мне такую ​​дату, как «Wed, 27 Mar 2013 15:12:14 +0000». Я пытаюсь разобрать его:Анализ даты в Twitter с Joda Time

DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss ZZZZZ").withLocale(Locale.ENGLISH); 

Но он не:

Invalid format: "Wed, 03 Apr 2013 10:35:35 +0000" is malformed at "+0000" 

Я попытался заменить ZZZZZ с z, Z и ZZZ, но без изменений. Могут ли эти даты разбираться таким образом?

+0

Примечание. Другие вопросы, которые, как представляется, задают одно и то же, фактически используются в другом формате. –

ответ

7

Хотя вы сказали, что вы уже использовали в шаблоне формата один Z, это работает:

DateTimeFormatter format = 
    DateTimeFormat.forPattern("EEE, dd MMM yyyy HH:mm:ss Z").withLocale(Locale.ENGLISH); 
DateTime dateTime = format.parseDateTime("Wed, 27 Mar 2013 15:12:14 +0000"); 

При анализе этого формата один Z часовой пояс персонаж будет достаточно, 4 недействителен:

Z часовой пояс/идентификационная зона -0800; -08: 00; Америка/Los_Angeles

Для более см the javadoc

0

Хотя принятый ответ правильный, Даты щебет, что я получаю от API в другой. Этот альтернативный анализатор работает в этом формате:

DateTimeFormatter format = DateTimeFormat.forPattern("EE MMM dd HH:mm:ss Z yyyy").withLocale(Locale.ENGLISH) 
String input = "Sat Jan 14 01:50:54 +0000 2017" 
DateTime dateTime = format.parseDateTime(input)