2013-04-03 13 views
5

Twitter mi dà una data come "Mer 27 Mar 2013 15:12:14 +0000". Sto cercando di analizzarlo con:Analisi di una data di Twitter con Joda Time

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

ma non riesce:

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

Ho provato a sostituire ZZZZZ con z, Z, e ZZZ, ma nessun cambiamento. Queste date possono essere analizzate in questo modo?

+0

Nota: altre domande che sembrano essere chiedendo la stessa cosa sono in realtà utilizzando un formato diverso. –

risposta

7

Anche se hai detto che hai usato un singolo Z nel modello di formato, questo funziona:

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

Quando l'analisi di questo formato di un singolo personaggio Z fuso orario sarà sufficiente, 4 non è valido:

Offset fuso orario Z/zona id -0800; -08: 00; America/Los_Angeles

Per ulteriori vedere the javadoc

0

Mentre la risposta accettata è corretta sono in un diverso, Le date di Twitter che sto ricevendo dal API. Questo parser alternativo funziona per quel formato:

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)