Parsuję sygnatury czasowe. Są zmuszeni do mojej lokalnej strefy czasowej (Europa/Londyn), kiedy je czytam. Zamiast tego chcę zachować oryginalne przesunięcie strefy czasowej.Jak zachować strefę czasową w znaczniku czasu 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
W tym przykładzie znacznik czasu z America/New_York jest wysyłany do Europy/Londynu. Kiedy konwertuję DateTime z powrotem na String, chcę odzyskać oryginalny ciąg, który wprowadziłem.
Dodatkowo, gdy pytam o sygnaturę czasową, o jaki dzień miesiąca to jest, chcę, aby było napisane, że pochodzi z 16-tego (bo taka była data w miejscu, w którym został wygenerowany), a nie 17 (mimo, że to była data w mojej strefie czasowej w tym samym momencie).
Jak to zrobić?
Nigdy nie wiedziałem, że offset parsera byłby domyślnie wyłączony. Wydaje się dziwne, że ISODateTimeFormat zachowuje się w ten sposób. Używanie dekoratora opisanego w dokumentach przy użyciu metody 'ISODateTimeFormat.dateTimeParser(). WithOffsetParsed(). ParseDateTime (dateAsString);' rozwiązało mój problem. Dziękuję za odpowiedź. http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormatter.html – Snekse