【问题标题】:What happened on Dec 31 1969 at 7:00 PM1969 年 12 月 31 日晚上 7:00 发生了什么
【发布时间】:2011-01-24 07:56:09
【问题描述】:

每次在 PHP 中创建一个像这样的变量时:

$date = strtotime($row['date']);
$date = date("M d Y \a\\t g:i A", $date); // Mmm dd YYYY at h:mm PM/AM

不知何故row['date'] 恰好是0,日期Dec 31 1969 at 7:00 PM 显示在屏幕上?谷歌没有告诉我太多,我想知道这个日期是否有任何意义。

【问题讨论】:

  • 一方面你有epic的错误,另一方面你有epoch的错误:)

标签: php date history


【解决方案1】:

我觉得有趣的是,这里没有一个回答试图回答您的实际问题,即(如果我可以解释的话)“Unix 纪元时间的实际日期有什么意义”?

我不是这方面的专家,但基本上,据我了解,纪元时间的概念是在 1971 年发明的。程序员选择了 1971 年 1 月 1 日 GMT 的任意日期作为纪元时间。这部分是由于旧计算机无法处理大量数字,因此日期必须是最近的。之后,将纪元时间调整为 1970 年 1 月 1 日,以便成为一个不错的整数。

所以基本上,在那一天没有“发生”任何事情。这是根据正在完成的工作的原始时间选择的任意日期。

【讨论】:

    【解决方案2】:

    让我猜猜:你住在美国东海岸吗?

    与许多其他系统一样,PHP 使用Unix epoch 来测量时间,即值 0 表示 1970 年 1 月 1 日午夜 UTC - 与东部标准时间 1969 年 12 月 31 日晚上 7:00 相同。

    【讨论】:

      【解决方案3】:

      Unix timestamps 以“自Unix Epoch 以来的时间”衡量,即 1969 年 12 月 31 日午夜 GMT 时间(又名 1970 年 1 月 1 日格林威治标准时间 00:00)。由于您似乎使用的是东部标准时间,即 GMT-5,因此您将获得 1969 年 12 月 31 日晚上 7 点,unix 时间戳值为 0。

      【讨论】:

        【解决方案4】:

        Unix 纪元是 1970 年 1 月 1 日 UTC 时间 00:00:00。这是所有时间戳的参考点。当您使用 PHP 的日期/时间函数时,您总是使用自纪元以来的秒数。时间 0 是纪元,您(或您的网络服务器)必须位于美国东海岸,比 UTC 时间晚 5 小时。

        【讨论】:

        • 我猜欧洲时区也是如此?
        • @Wollhaar 当然,相同的概念适用于所有时区。欧洲有多个时区,从 UTC+0 到 UTC+3(我相信)。
        • 啊,好吧,首先我认为时间戳会跟随美国时区的任何时间......但是当它在 UTC 时间时,我就明白了。但是我现在应该在 UTC 铺设后 2 小时。但它不是......我得到一个 cookie,里面有一个 1969-12-31T23:59:59.000Z 的时间戳,这有点尴尬
        【解决方案5】:

        存储日期对象的一种格式是从任意开始时间经过的时间(以秒为单位)。要求“0”的格式化版本就像要求任意开始时间。我不记得为什么选择那个日期,但我相信维基百科会。请参阅下面有关 Unix 时间的文章。

        Read about Unix Time

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-25
          • 1970-01-01
          • 2011-03-24
          相关资源
          最近更新 更多