2013-04-03 13 views
5

Twitter podaje mi datę "Śro, 27 marca 2013 15:12:14 +0000". Próbuję analizować go z:Parsowanie daty na Twitterze z czasem Jody

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

Ale to się nie powiedzie:

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

Próbowałem zastępując ZZZZZ z z, Z i ZZZ, ale bez zmian. Czy te daty mogą być przetwarzane w ten sposób?

+0

Uwaga: Inne pytania, które zadają to samo, są w rzeczywistości w innym formacie. –

Odpowiedz

7

Chociaż powiedziałeś już używany jeden Z na wzór formatu, to działa:

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

Podczas analizowania tego formatu pojedynczy znak strefa czasowa Z wystarczą, 4 jest nieprawidłowy:

Strefa czasowa przesunięcia strefy czasowej/id -0800; -08: 00; Ameryka/Los_Angeles

uzyskać więcej zobacz the javadoc

0

Choć przyjął odpowiedź jest poprawna, daty Twitterze, że dostaję od API znajdują się w innej. Ten alternatywny analizator składni działa w tym formacie:

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) 
Powiązane problemy