Comment puis-je analyser une date, y compris fuseau horaire avec Joda temps
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?
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