PHP strtotime和MySQL UNIX_TIMESTAMP返回不同的整数

时间:2010-09-11 13:04:57

标签: php mysql timestamp unix-timestamp

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

返回:1284207301

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

返回:1284200101

为什么会有差异?

4 个答案:

答案 0 :(得分:3)

答案在php.net article about strtotime

  

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

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

答案 1 :(得分:2)

这通常是由于将PHP和MySQL设置为使用不同的时区,以及如果它们碰巧位于不同的服务器中,则会导致系统时间的差异。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

我的猜测是Unix时间是GMT,另一个是你当地的时区,2个输出之间有2个小时的差异(7200/60/60)