乔达时区计算

问题描述 投票:7回答:1

被玩弄乔达时区,发现这似乎有些奇怪以下。

我跑到下面的代码

    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”相反。有人可以解释为什么这些出来这样的,因为我本来期望相反。

java timezone jodatime
1个回答
15
投票

documentation介绍了本不那么直观的行为的原因。它说Etc/GMT+1有一个标准-1:00的偏移和Etc/GMT-1有一个标准+1:00的偏移。抵消这种逆转适用于任何Etc/GMT+n

wiki

的等特殊区域用于一些行政区域,特别是对“ETC / UTC”,这代表协调世界时。为了与POSIX风格接轨,以“ETC / GMT”开始的那些区域名称从大多数人希望他们的标志反转。在这种风格,GMT以西的地区有积极的迹象,那些东在他们的名字有一个负号(如“ETC / GMT-14”是超前/ GMT以东14小时。)

© www.soinside.com 2019 - 2024. All rights reserved.