echo strtotime('2010-09-11 12:15:01');
退货:1284207301
SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')
退货:1284200101
为什么有区别?
echo strtotime('2010-09-11 12:15:01');
退货:1284207301
SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')
退货:1284200101
为什么有区别?
答案在关于 strtotime 的 php.net 文章中:
此函数将使用 TZ 环境变量(如果可用)来计算时间戳。从 PHP 5.1.0 开始,有更简单的方法来定义所有日期/时间函数中使用的时区。该过程在 date_default_timezone_get() 函数页面中进行了说明。
短版:strtotime 默认使用您的时区,UNIX_TIMESTAMP 不使用。
这通常是由于将 PHP 和 MySQL 设置为使用不同的时区,以及如果它们恰好位于不同的服务器中时系统时间的差异造成的。
UNIX 时间戳是自 UTC 时间 1970 年 1 月 1 日午夜 UNIX 纪元以来经过的秒数,因此时区差异将给出不同的时间戳。
1284207301-1284200101 = 7200
-> 2 小时。如此完美的差异不是由于错误,而是时区差异。最有可能的一个是 UTC/GMT,另一个是 UTC +/- 2
我的猜测是 Unix 时间是格林威治标准时间,另一个是您当地的时区,两个输出之间正好有 2 小时的差异(7200/60/60)