【问题标题】:UNIX timestamp always in GMT?UNIX时间戳总是在格林威治标准时间?
【发布时间】:2011-02-20 16:34:51
【问题描述】:

UNIX 时间戳总是以 GMT 表示?

我尝试运行 php 函数 time()

当我尝试从 time() 函数转换 unix 时间戳时,输出与计算机时间不相似。

谢谢

【问题讨论】:

  • time() 返回的值为当地时间。你用什么来显示值?
  • 政治正确的时间当然是UTC,因为格林威治不再是帝国的中心。嗯,它可能是,但帝国不像以前那么大了:-)
  • time() 返回的值是从纪元日期算起的秒数。它本身没有时区。转换为日历形式时,即对值应用(或不应用)时区。
  • @Loadmaster,从技术上讲,它确实有一个时区,因为 UNIX 纪元是 UTC。
  • @paxdiablo,也许是这样,但同样合乎逻辑的是,对于自任意纪元开始日期以来的简单秒数,没有时区、年、日、小时等概念.这只是时间间隔的计数。

标签: php unix timestamp gmt


【解决方案1】:

是的,UNIX 时间戳表示从 GMT+0 中的 unix-time 纪元过去多少秒

【讨论】:

  • 我的一生都是谎言
【解决方案2】:

从技术上讲,没有。

即使纪元时间是自 1/1/70 00:00:00 以来经过的秒数,真正的“GMT”(UTC) 不是。

UTC 时间需要更改几次,以考虑到地球自转速度的减慢。

正如大家所写,大多数人在 UTC 时使用 epoch。

您可以在https://en.wikipedia.org/wiki/Unix_time阅读更多内容。

【讨论】:

    【解决方案3】:

    UNIX 时间戳(A.K.A. Unix 的纪元)表示自 1970 年 1 月 1 日 00:00:00 UTC(世界标准时间)以来经过的秒数。所以,如果你需要特定时区的时间,你应该转换它。

    即使在技术上可行,我也会推荐其他方法来获取当前时间(或任何其他时间),例如 getdate 在返回之前已经考虑了本地时区。

    【讨论】:

    • time() 也考虑本地时区
    • @zerkms 不符合文档:php.net/manual/en/function.time.php
    • @Alix Axel:没问题!加油克里斯蒂亚诺·罗纳尔多!
    • GMT 不是 UTC!如文档中所述:“返回以 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来的秒数为单位测量的当前时间。”
    【解决方案4】:

    是的,time 应该返回 UTC。如果您想将其转换为当地时间,您需要一个类似的函数,...,嗯,让我想,..,是的,就是这样,localtime :-)

    这将为您提供一个更实用的表单,其中包含单独的字段。

    按照上面的链接查看每个链接的 PHP 文档。不确定 PHP 是否有 gmtime 等价物。


    顺便说一句,在网上搜索带有man timetime 手册页时要非常小心——您可能无法得到您所期望的。如果您正在寻找man 本身的联机帮助页:man man,您肯定不会得到您所期望的。

    也就是说,除非您正在寻找与我不同的东西:-)

    【讨论】:

      【解决方案5】:

      检查date_default_timezone_get() 的返回值以查看默认时区是什么。该链接还列出了更改值的方法,首选是通过在 php.ini 中设置 date.timezone。

      【讨论】:

        猜你喜欢
        • 2012-05-21
        • 2011-05-13
        • 2011-10-30
        • 2013-03-10
        • 1970-01-01
        • 2013-06-01
        • 2010-12-02
        • 2011-09-10
        • 2019-11-25
        相关资源
        最近更新 更多