我想在PHP和Javascript中为给定的一天创建两个相同的时间戳,但是有区别....
2012年7月1日:
PHP
$test = mktime(0,0,0,7,1,2012); gives 1341093600
的JavaScript
var d = Date.UTC(2012,6,1);
var timestamp = d/1000; gives 1341100800
为什么2小时差异?
答案 0 :(得分:6)
对Date.UTC
的调用将创建一个时间戳,该时间戳是2012-07-01 UTC的午夜。
mktime将执行相同的操作,除了PHP配置使用的任何时区。
换句话说,您的服务器未设置为UTC。
最简单的解决方案可能是strtotime:
$timestamp = strtotime('2012-07-01 UTC');
还有gmmktime或者您可以将PHP的时区设置为UTC。我会这样做in the .ini
,但要在代码中执行此操作,您可以使用date_default_timezone_set:
date_default_timezone_set('UTC');
作为个人偏好的注释,我避免使用mktime。在strtotime
和DateTime
之间,我很少发现mktime导致代码更清晰,更易读的情况。 mktime的野兽参数列表使得它所在的任何一行看起来都非常可怕。