【问题标题】:Is time() guaranteed to be leap-second aware?time() 是否保证能够感知闰秒?
【发布时间】:2011-10-15 20:32:20
【问题描述】:

PHP 手册指出time() 返回 "当前 UNIX 时间戳"  ­microtime() 返回 "当前 Unix 时间戳,微秒" ʙ

但是,这些函数是否保证表现得像that of strictly conforming POSIX.1 systems

具体来说,是否插入闰秒,以使time() | microtime() 的输出在第二天开始时向后跳跃 1 秒,(这也是闰秒结束时,)在整个下一秒的第一秒内为我们提供重复返回值——而不是新鲜唯一值天?

例如,如果我们在 1998-12-31 和 1999-01-01 的跨度内每微秒轮询 time() | microtime(),每个值是否会出现两次在 915 148 800 <= x < 915 148 801 范围内?

【问题讨论】:

  • 你在这上面花了多少秒?
  • @Ash:可爱但内容丰富……哈哈
  • @Ash 你的意思是 SI 秒还是太阳秒?
  • PHP 从它运行的系统中获取时间,所以我想这将取决于操作系统。
  • 查看谷歌的这篇文章,他们想出了一个很好的方法:googleblog.blogspot.com/2011/09/…

标签: php linux windows time hhvm


【解决方案1】:

从 PHP 中的 time() 获得的 UNIX 时间戳是一种奇特的野兽。

我花了很长时间才明白这一点,但实际情况是,在闰秒期间时间戳会增加,当闰秒结束时,时间戳(但不是 UTC!)会跳回一秒。

这有一些重要的含义:

  • 您始终可以准确地将 UTC 转换为 UNIX 时间戳
  • 您可以总是(对于所有时间点)将时间戳转换为 UTC
  • Unix 时间戳是不连续的,即它后退。 (或者,它保持不变而不增加 2 秒。)
  • 如果从 UNIX 时间戳转换为 UTC 时出现转换错误,该错误最多会延迟 2 秒。 (这意味着您可能会走错一天。)
  • 回顾中,Unix 时间戳将显示为线性。这意味着,如果您正在存储时间序列数据,并且您不担心每年有一两秒被错误表示,那么您可以考虑存储的时间戳数据是连续的。

解决方法

如果 Unix 时间戳既没有突然跳回也没有保持 2 秒不变怎么办?这正是谷歌为他们的服务器所做的事情。他们的解决方案是在很长一段时间内使用slowly skew the time merely milliseconds at a time,以使闰秒转变对应用程序几乎不可见。 (就谷歌服务器上的应用程序和操作系统而言,the IERS 不再插入闰秒。)

【讨论】:

  • @Prof.,Angelom 的回答会更准确吗?它依赖于平台?
  • @Pacerier,不完全是 平台,但 PHP 取决于操作系统上的时间才能正确配置。
【解决方案2】:

PHP 是一种服务器端语言。 time() 函数将解析为该服务器的系统时间。如果服务器正在运行 NTP 守护程序,那么它将感知闰秒并相应地进行调整。 PHP对此一无所知,但系统知道。

【讨论】:

    【解决方案3】:

    time() 只返回 UNIX 时间戳。这意味着,它不受闰秒(等等)的影响,因为你永远不会“失去”时间,只是因为有人决定了它。仅文本表示(例如使用 date() 创建的)受到影响。

    【讨论】:

    • 我想问题应该是; date() 是否知道闰秒?
    • @Pacerier 维基百科的文章说完全相反:“......定义为自 1970 年 1 月 1 日协调世界时 (UTC) 午夜以来经过的秒数,不计算闰秒。”
    • @Juhana:听起来有点疯狂,但 Pacerier 似乎是对的......必须说,不知道。但是,在您的论证中,不可能将 ISO- 转换为 UNIX 时间戳,但反过来总是可能的,因为每个 UNIX 时间戳秒都是唯一的。
    • @Juhana:“当插入闰秒时(平均每年半年发生一次),Unix时间数在闰秒期间不断增加,在此期间超过86 400 s 从今天开始,然后在闰秒结束时向下跳1,即第二天的开始。"
    • 好的,我知道我们可能对“影响”这个词有不同的定义。
    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2013-04-07
    • 2012-06-05
    • 2019-09-21
    • 2012-12-29
    • 2010-10-21
    • 2014-08-20
    • 1970-01-01
    相关资源
    最近更新 更多