J'analyse les horodatages. Ils sont forcés dans mon fuseau horaire local (Europe/Londres) lorsque je les lis. Je veux conserver le décalage de fuseau horaire d'origine à la place.Comment préserver le fuseau horaire dans l'horodatage Joda-Time?
scala> val fmt = org.joda.time.format.ISODateTimeFormat.dateTimeNoMillis()
scala> val t = fmt parseDateTime ("2012-04-16T23:00:45-04:00")
t: org.joda.time.DateTime = 2012-04-17T04:00:45.000+01:00
scala> t.getDayOfMonth
res2: Int = 17
scala> fmt print t
res1: java.lang.String = 2012-04-17T04:00:45+01:00
Dans cet exemple, un horodatage de America/New_York est forcé vers Europe/London. Quand je convertis le DateTime en String, je veux récupérer la chaîne originale que j'ai alimentée.
De plus, quand je demande à l'horodateur de quel jour du mois il vient, je veux dire qu'il est du 16ème (parce que c'est ce que la date était à l'endroit où il a été généré), pas le 17 (même si c'est ce que la date était dans mon fuseau horaire au même instant).
Comment faire?
Je ne savais pas que l'analyseur de décalage serait désactivé par défaut. Cela semble étrange pour ISODateTimeFormat de se comporter ainsi. En utilisant le décorateur décrit dans les documents, en utilisant 'ISODateTimeFormat.dateTimeParser(). WithOffsetParsed(). ParseDateTime (dateAsString);' résolu mon problème. Merci d'avoir répondu. http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormatter.html – Snekse