被玩弄乔达时区,发现这似乎有些奇怪以下。
我跑到下面的代码
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”相反。有人可以解释为什么这些出来这样的,因为我本来期望相反。
这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小时。)