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