Domanda

Questo frammento di codice analizza sempre la data nel fuso orario corrente, e non nel fuso orario nella stringa di essere analizzato.

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00

E 'uscite:

dateTime = 2009-08-24T04:36:46.000+02:00

considerando che mi aspetto:

dateTime = 2009-08-24T04:36:46.000+10:00

Tutte le idee che sto facendo male?

È stato utile?

Soluzione

OK, alcune Googling mi ha dato la risposta alla mia domanda: utilizzare withOffsetParsed() , come:

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df.withOffsetParsed()
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");

Questo funziona.

Altri suggerimenti

Inoltre è possibile scegliere:

// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top