【发布时间】:2010-09-11 13:04:56
【问题描述】:
echo strtotime('2010-09-11 12:15:01');
返回:1284207301
SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')
返回:1284200101
为什么不一样?
【问题讨论】:
标签: php mysql timestamp unix-timestamp
echo strtotime('2010-09-11 12:15:01');
返回:1284207301
SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')
返回:1284200101
为什么不一样?
【问题讨论】:
标签: php mysql timestamp unix-timestamp
答案在php.netarticle about strtotime:
此函数将使用 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)
【讨论】: