0
echo strtotime('2010-09-11 12:15:01');

退货:1284207301

SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')

退货:1284200101

为什么有区别?

4

4 回答 4

3

答案在关于 strtotime 的 php.net 文章中

此函数将使用 TZ 环境变量(如果可用)来计算时间戳。从 PHP 5.1.0 开始,有更简单的方法来定义所有日期/时间函数中使用的时区。该过程在 date_default_timezone_get() 函数页面中进行了说明。

短版:strtotime 默认使用您的时区,UNIX_TIMESTAMP 不使用。

于 2010-09-11T13:10:09.957 回答
2

这通常是由于将 PHP 和 MySQL 设置为使用不同的时区,以及如果它们恰好位于不同的服务器中时系统时间的差异造成的。

UNIX 时间戳是自 UTC 时间 1970 年 1 月 1 日午夜 UNIX 纪元以来经过的秒数,因此时区差异将给出不同的时间戳。

于 2010-09-11T13:08:45.140 回答
1

1284207301-1284200101 = 7200-> 2 小时。如此完美的差异不是由于错误,而是时区差异。最有可能的一个是 UTC/GMT,另一个是 UTC +/- 2

于 2010-09-11T13:11:08.857 回答
1

我的猜测是 Unix 时间是格林威治标准时间,另一个是您当地的时区,两个输出之间正好有 2 小时的差异(7200/60/60)

于 2010-09-11T13:11:46.077 回答