繁体   English   中英

Joda时区计算

[英]Joda time zone calculation

一直在玩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”则相反,我感到有些惊讶。 有人可以解释为什么这些会像我预期的那样出现。

文档解释了这种不那么直观的行为的原因。 它表示Etc/GMT+1的标准偏移为-1:00Etc/GMT-1的标准偏移为+1:00 对于任何Etc/GMT+n这种偏移的反转都成立。

来自维基

Etc的特殊区域用于某些管理区域,特别是代表协调世界时的“Etc / UTC”。 为了符合POSIX风格,那些以“Etc / GMT”开头的区域名称与大多数人的期望相反。 在这种风格中,格林威治标准时间以西的区域有一个正号,而东方的区域有一个负号(例如“Etc / GMT-14”比格林威治标准时间早14个小时/东部。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM