首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解Etc/GMT时区

了解Etc/GMT时区
EN

Stack Overflow用户
提问于 2011-09-05 11:07:55
回答 5查看 39.6K关注 0票数 29

当苹果从App Store退回自动续订的收据时,他们使用Etc/GMT时区的理由是什么?

Etc/GMT时区到底是什么?Java SDK能理解这个时区吗?或者我必须使用其他第三方库,如Joda-Time

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-11 12:01:00

严格来说,Etc/GMT与UTC或GMT不是一回事。仅当偏移量为0时,它们才表示相同的时间瞬间。在所有其他情况下,它们是完全不同的。

苹果公司解释了here的名称。

直接引用该链接提供了一个示例:

我们在区域名称和输出缩写中使用POSIX样式的符号,尽管这与许多人的预期相反。POSIX在格林威治以西有积极的迹象,但许多人预计格林威治以东的积极迹象。例如,TZ='Etc/GMT+4‘使用缩写"GMT+4“,对应于协调世界时晚4小时(即格林威治以西),尽管许多人认为它意味着比协调世界时早4小时(即格林威治以东)。

票数 29
EN

Stack Overflow用户

发布于 2019-07-25 11:02:39

偏移与分区

了解:

  • An offset-from-UTC只是几个小时-分钟-秒的数字,领先于协调时的基线,或落后于协调时。
  • A time zone远不止这些。时区是特定地区的人们使用的偏移量的过去、现在和未来变化的历史记录。

正数与负数

不同行业的不同协议在编号上有所不同,一些人认为UTC之前的偏移量是正数,而另一些人则使用负数。对称地,一些人认为UTC之后的偏移量是负的,而另一些人则使用正的。

在我见过的大多数现代协议中,例如ISO 8601,协调时之前(朝向东部)的偏移量是正的,而协调时(朝向西)之后的偏移量是负的。因此,美洲区域使用的偏移量具有负数,例如今天偏移量为-07:00-08:00America/Los_Angeles (因Daylight Saving Time (DST)而在一年中变化)。

我建议你学会把这种方式( UTC的右边是正数,UTC的左边是负数)看作主流,反之亦然。

时区名称通常采用Continent/Region格式,如America/EdmontonEurope/ParisAfrica/TunisAsia/KolkataPacific/Auckland。请参阅此list on Wikipedia (可能不是最新的)。但也有一些例外。Etc/GMT…名称采用相反的加/减约定:

  • Etc/GMT+1 =协调世界时偏移量=比UTC
  • Etc/GMT+12晚1小时= -12:00偏移量=比-01:00

晚12小时

…和…

  • Etc/GMT-1 =协调世界时偏移=比UTC
  • Etc/GMT-12提前一小时= +12:00偏移=比+01:00

提前12小时

令人困惑?欢迎来到日期-时间处理的古怪世界。从这里开始只会变得更奇怪。

要点:

  • 理解那些发布数据的人的含义和意图。切勿假定输入字符串的含义。
  • 仅将java.time类用于所有日期时间工作。永远不要使用糟糕的遗留类java.util.DateCalendarSimpleDateFormat等。

幸运的是,java.time类可以帮助您解决这个问题。使用ZoneId类查看correct Answer by Ole V.V.

您的问题

苹果使用Etc/GMT时区背后的

原理

它们意味着零的偏移量,UTC本身。字符串Etc/GMT是表示偏移量为0小时-分钟-秒的一个规范标签。

日期-时间字符串末尾常见的字母Z (发音为“Zulu”)表示相同的意思,即偏移量为零。

Etc/GMT时区到底是什么?

字符串Etc/GMT是一个时区的名称,该时区曾经只有一个偏移量,即零时-分-秒偏移量。

大多数其他时区,如Europe/BerlinAfrica/Casablanca,其偏移量在历史上都不同。例如,在that Africa/Casablanca zone in Morocco,政客们去年已经决定,他们不再每年两次将一个小时转换为标准时间&美国夏令时,而是一年四季都永久停留在美国东部夏令时。我笑着说“永久”,因为这实际上意味着“直到政客们再次改变主意”。世界各地的政治家都表现出了以令人惊讶的频率重新定义时区的倾向。

Java SDK能理解这个时区吗?

是。参见Ole V.V.的the Answer。:ZoneId.of( "Etc/GMT" )

,或者我必须使用其他第三方库,如Joda-Time?

仅供参考,项目现在位于maintenance mode中,建议迁移到类。参见Tutorial by Oracle

您应该将java.time类用于所有日期-时间处理。

票数 10
EN

Stack Overflow用户

发布于 2011-09-05 14:53:42

Etc/GMT只是表示UTCGMTGMT0GMT+00:00的标准方式。

Java JDK可以理解所有的格式。通过执行以下操作,您可以很容易地看到这一点:

代码语言:javascript
复制
import java.util.TimeZone;

public class Playground {

    public static void main(String... args) {

        for (String s : TimeZone.getAvailableIDs()) {
            System.out.println(s);
        }
    }
}

这将打印出Java JDK可以解析的所有不同的TimeZone格式:

...

Etc/GMT

Etc/GMT+0

Etc/GMT-0

Etc/GMT0

Etc/格林威治

Etc/UCT

Etc/UTC

Etc/通用

...

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7303580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档