2

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

4

1 回答 1

6

调用Date.UTC将创建一个时间戳,即 2012-07-01 UTC 的午夜。

另一方面,mktime将做同样的事情,除了 PHP 配置使用的任何时区。

换句话说,您的服务器未设置为 UTC。

最简单的解决方案可能是strtotime

$timestamp = strtotime('2012-07-01 UTC');

还有gmmktime或者您可以将 PHP 的时区设置为 UTC。我会在 中执行此.ini操作,但要在代码中执行此操作,您可以使用date_default_timezone_set

date_default_timezone_set('UTC');

作为个人喜好的说明,我避免使用 mktime。在strtotime和之间DateTime,我很少发现 mktime 会产生更清晰、更易读的代码。mktime 野兽般的参数列表使得它所在的任何行都显得很可怕。

于 2012-06-29T09:22:12.233 回答