JodaTime смущен смещением TimeZone

Я получаю строку типа даты "2018-06-21T13:30:00Z"Разбираю это по шаблону "yyyy-MM-dd'T'HH:mm:ssZ"

Я в GMT+2, и результат выглядит 2018-06-21T15:30:00.000+02:00в то время как я ожидал, что это будет выглядеть так 2018-06-21T13:30:00.000+02:00

Предполагается, что смещение уже применяется в HH:mm:ss часть результата?

Код

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ").parseDateTime("2018-06-21T13:30:00Z")

Joda:2.9.7

1 ответ

Решение

Да, указывается дата по местному времени +02:00.

Из ISO 8601 Википедия Смещение по времени от UTC:

Все следующие моменты времени относятся к одному и тому же моменту: "18:30Z", "22:30+04", "1130−0700" и "15:00−03:30". Буквы навигационного часового пояса не используются, за исключением Z. Для вычисления времени UTC необходимо вычесть смещение из местного времени, например, для "15: 00−03: 30" до 15:00 - (−03: 30) чтобы получить 18:30 UTC.

Итак, для вашего случая: 2018-06-21T15:30:00.000+02:00 означает 15:30 - 02:00, поэтому UTC 13:30

Другие вопросы по тегам