我想在 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小时?
我想在 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小时?
调用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 野兽般的参数列表使得它所在的任何行都显得很可怕。