Как сохранить часовой пояс в метке времени Joda-Time? - PullRequest
8 голосов
/ 10 мая 2011

Я анализирую метки времени. Когда я их читаю, они переводятся в мой местный часовой пояс (Европа / Лондон). Вместо этого я хочу сохранить исходное смещение часового пояса.

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

В этом примере метка времени из Америки / Нью-Йорка принудительно отправляется в Европу / Лондон. Когда я конвертирую DateTime обратно в String, я хочу вернуть исходную строку, которую я ввел.

Кроме того, когда я спрашиваю временную метку, из какого дня месяца, я хочу, чтобы она ответила, что она 16-го числа (потому что это была дата в том месте, где она была сгенерирована), а не 17-го (хотя это то, что дата была в моем часовом поясе одновременно).

Как мне это сделать?

1 Ответ

17 голосов
/ 10 мая 2011

Попробуйте создать DateTimeFormatter с включенным анализом смещения. Это должно привести к тому, что проанализированные DateTime объекты сохранят смещение от строки, которая была первоначально проанализирована.

Если это не сработает, возможно, вам придется хранить часовой пояс отдельно.Затем, чтобы напечатать дату, вы извлекаете саму дату, и целевой часовой пояс. Установите форматер с нужным часовым поясом, и используйте его для форматирования даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...