Расчет часового пояса Йода - PullRequest
7 голосов
/ 24 октября 2011

Поигрался с часовыми поясами Joda и нашел следующее, которое показалось странным.

Я запустил следующий код

    DateTimeZone gmt = DateTimeZone.forID( "Etc/GMT" );
    DateTimeZone gmtPlusOne = DateTimeZone.forID( "Etc/GMT+1" );
    DateTimeZone gmtMinusOne = DateTimeZone.forID( "Etc/GMT-1" );

    System.out.println( new DateTime( gmt ).toString() );
    System.out.println( new DateTime( gmtPlusOne ).toString() );
    System.out.println( new DateTime( gmtMinusOne ).toString() );

И получил следующий вывод

2011-10-24T13:00:12.890Z
2011-10-24T12:00:12.937-01:00
2011-10-24T14:00:12.937+01:00

Я был немного удивлен, увидев, что «gmtPlusOne» вышел на один час позже с -01: 00 и наоборот для «gmtMinusOne».Может кто-нибудь объяснить, почему это так, как я ожидал?

1 Ответ

15 голосов
/ 24 октября 2011

Эта документация объясняет причину такого не интуитивного поведения. Он говорит, что Etc/GMT+1 имеет стандартное смещение -1:00, а Etc/GMT-1 имеет стандартное смещение +1:00. Это изменение смещения справедливо для любого Etc/GMT+n.

Из вики

Специальная зона Etc используется для некоторых административных зон, особенно для "Etc / UTC", который представляет координированный универсальный Время. Чтобы соответствовать стилю POSIX, эти имена зон начиная с "Etc / GMT", их знак обратный от того, что большинство люди ожидают. В этом стиле зоны к западу от GMT имеют положительный знак и эти восточные имеют отрицательный знак в своем имени (например, "Etc / GMT-14" 14 часов вперед / к востоку от GMT.)

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