为什么 PHP 和 MySQL unix 时间戳在 1983-10-29 上发散?
我一直在我的应用程序中使用PHP和MySQL的函数,将日期转换为时间戳。PHP和MySQL在我的本地机器上运行,这些函数通常返回相同的结果,正如我所期望的那样:strtotime
UNIX_TIMESTAMP
$ php
<?php echo strtotime("2011-06-02"); ?>
1307001600
mysql> SELECT UNIX_TIMESTAMP("2011-06-02") ts;
+------------+
| ts |
+------------+
| 1307001600 |
+------------+
但是,偶然地,我碰巧注意到,当我输入日期时,结果不再相等:1983-01-01
$ php
<?php echo strtotime("1983-01-01"); ?>
410263200
mysql> SELECT UNIX_TIMESTAMP("1983-01-01") ts;
+-----------+
| ts |
+-----------+
| 410256000 |
+-----------+
如您所见,PHP返回410263200,而MySQL返回410256000 - 相差7200秒。
这让我很好奇,我想知道时间戳在什么日期不再等效,所以我写了一个小程序,从今天的日期开始(以Y-m-d格式),使用PHP和MySQL并比较结果。然后,它从每个值中减去 1 天并循环,直到它们不再相等。strtotime
UNIX_TIMESTAMP
结果:
1983-10-29
1983 年 10 月 29 日,由于某种原因,返回相差 7200 秒的值。strtotime
UNIX_TIMESTAMP
有什么想法吗?
感谢您的阅读。