Question

Ce bout de code parse toujours la date dans le fuseau horaire actuel, et non dans le fuseau horaire dans la chaîne en cours d'analyse.

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

Il produit:

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

alors que je pense:

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

Toutes les idées ce que je fais mal?

Était-ce utile?

La solution

OK, plus googler m'a donné la réponse à ma propre question: utiliser withOffsetParsed() , comme ceci:

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

Cela fonctionne.

Autres conseils

vous pouvez également choisir:

// parse using the Paris zone
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top