PHP maketime在前一天给出22.00

时间:2012-06-29 09:19:19

标签: php javascript

我想在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小时差异?

1 个答案:

答案 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。在strtotimeDateTime之间,我很少发现mktime导致代码更清晰,更易读的情况。 mktime的野兽参数列表使得它所在的任何一行看起来都非常可怕。