GMT 和 UTC 一样吗? [复制]

Posted

技术标签:

【中文标题】GMT 和 UTC 一样吗? [复制]【英文标题】:Is GMT same as UTC? [duplicate] 【发布时间】:2013-02-05 19:40:27 【问题描述】:

我正在运营一个面向全球的网站,来自世界各地的人们都可以访问该网站。该数据库包含国际日期变更线西格式的时间。我正在使用 javascript 获取用户时区,并将数据库中的时间转换为用户的时间,然后显示在页面上。我想问国际日期变更线西是世界级网站的正确格式吗?或者设置为 UTC 或 GMT 会更好? UTC 和 GMT 以及国际日期变更线西有什么区别?这三个一样吗?最后,我应该在我的服务器上设置什么时间才能使用用户时区的偏移量进行转换?

【问题讨论】:

据我了解,UTC 是 GMT,但没有夏令时。但是我很久以前就学会了远离混乱的日期时间问题。 简短回答是。长答案没有。 GMT 从来没有“夏令时”,所以它被称为“BST”或其他名称,所以这不是问题。最主要的是 GMT 和 UTC 的差异最多但不会超过 500 毫秒。 嗯...@Servy,那我们英国为什么要在夏天去 GMT+1 呢? 那么我应该在服务器上设置什么时区? @JohnWillemse:是的。您应该将所有日期作为 UTC 存储在数据库中。您的服务器的时区与此问题实际上无关。您应该关心的是从 UTC 到客户时区的转换。 【参考方案1】:

UTC 实际上是 GMT 的新名称。它有非常小的差异,但在那种情况下不会影响你。

Servy 的评论是完全错误的,说 GMT 包括夏令时。这是一个不同的时区,称为 BST,英国在夏季从 GMT 移至该时区。

【讨论】:

UTC 使用闰秒来补偿地球和太阳运动的不规则性,这意味着有时 UTC 中的一分钟可能有 59 或 61 秒。但是,因为它是基于零度经度,它穿过格林威治天文台,所以它通常与格林威治标准时间相匹配。请注意,UTC 没有夏令时。 国际日期变更线怎么样?你能告诉我那是什么吗? 那个很容易在 google 上找到 :) en.wikipedia.org/wiki/International_Date_Line 是的,我已经读过,但我无法理解它是一个时区还是什么?我应该设置吗?因为我的服务器目前在那个时区。 其实不是重命名:GMT是时区,UTC是时间标准。见timeanddate.com/time/gmt-utc-time.html【参考方案2】:

如果您对天文观测感兴趣,例如GPS 等卫星,或者如果您想引用技术标准 (ITU-R TF.460-6),那么您可能会关心我们使用 UTC 并且不再使用 GMT有一个精确的定义。否则,您可能会认为 GMT 与 UTC 相同,并且还认为 UT and UT1 与 UTC 相同——从技术上讲,它们不是。

此外,如果您要跟踪计算机犯罪分子或其他分布式活动,那么您需要确定不同站点上的某些事件是否发生在某些其他事件之前。为此,您需要学习和使用Network Time Protocol (NTP)。与 UTC、UT1 和 UT 之间的微小差异相比,这对您对时间的理解产生的影响要大得多。

“International Date LineWest”只是一个时区的友好名称,该时区的时间定义为比 UTC 小 12 小时(即 UTC-12)。

【讨论】:

它是一个友好的名字吗?我本来预计 UTC+12(例如:苏瓦) 它没有回答这个问题。是一样的还是不一样的? 糟糕,我以不清楚的方式使用了代词“which”和“they”。我在考虑所有“GMT”(根据格林威治子午线的平均太阳时的定义)、UTC、UT1 和“UT”(根据其任何其他定义,例如 UT0)。虽然所有这些都彼此近似,但大多数情况下它们的确切值都是不同的。 @Jasen 遵守时区规则,国际日期变更线 East 应为 UST+12 @CᴴᴀZ 苏瓦位于 IDL 以西,但 IDLW 描述了一个位于日期变更线以东的区域。【参考方案3】:

通常当您必须向不同时区的人显示日期或时间时,您应该将所有时间信息以 UTC 格式保存在数据库中,并将其转换为显示层上的用户时区(当您向您的用户)

但是,您会遇到一些挑战: - 您从 javascript 获得的时区可能不可信 - 通过IP找到用户的位置然后获取时区也是不可信的

我认为一个好的方法是使用“最佳猜测”来找到默认时区(javascript 时区就足够了)并让用户能够主动配置他的时区。

在某些谷歌应用程序上,他们的方法是在开始之前提示用户输入他的时区,只有当您可以保证您不必在每次用户访问您的网站时都重复此操作时才应该这样做(通过用户帐户或饼干)

【讨论】:

但在这种情况下,我们必须为未注册设置 cookie,为已注册设置数据库条目。但根据我的经验,有些人甚至不知道什么是时区? ...那他们呢..所以我们要处理所有这些问题 你误会了。所有日期和时间信息都以 UTC 格式保存在数据库中。当用户访问您的站点时,您将该日期时间信息转换为用户的时区。这个想法是为了保证他不必对时区了解太多,所有提供给他的日期和时间都在他的时区。 我不这么认为..因为我的数据库没有在 UTC 中节省时间。它保存在我的当地时间。那是印度时间。 您可以通过将数据库配置为默认使用 UTC 时区 (my.cnf) 或在每次连接时发送“SET time_zone='+0:00'”来强制数据库将其保存为 UTC。 @ShivaPareek 您可能在数据库中使用了错误的数据类型。在符合 SQL 标准的数据库中,例如 Postgres,数据类型为 TIMESTAMP WITH TIME ZONE 的列将节省输入的时区或从 UTC 偏移的时间——在大多数数据库中,这意味着使用提供的区域/offset 在存储之前将值调整为 UTC。相比之下,数据类型TIMESTAMP WITHOUT TIME ZONE 忽略输入提供的任何区域/偏移信息,而是仅存储日期和时间。

以上是关于GMT 和 UTC 一样吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

NSTimeZone:“UTC”和“GMT”有啥区别吗?

如何在 Python 中获取或打印 GMT 时区的当前日期时间? [复制]

如何使用js将UTC日期转换为本地时间? [复制]

关于GMT UTC CST和Linux时区设置

服务器中没有 UTC 作为时区很重要吗? [复制]

各种时间格式(UTC、GMT等)及夏令时和冬令时