php,正常日期是正确的,但gmdate不准确

时间:2014-07-22 08:06:56

标签: php

我必须用GMT日期计算,但看起来有一个错误,或者我不明白。

echo date('Y-m-d H:i:s').'<br>';
$time = strtotime(date('Y-m-d H:i:s'));
// calculations will come
$time = date('Y-m-d H:i:s', $time);
echo $time.'<br>';

这会打印出与预期相同的日期。 但是这个:

echo gmdate('Y-m-d H:i:s').'<br>';
$time = strtotime(gmdate('Y-m-d H:i:s'));
// calculations will come
$time = gmdate('Y-m-d H:i:s', $time);
echo $time.'<br>';

不一样。我究竟做错了什么?我必须使用GMT时间,这是一个国际网站。

2 个答案:

答案 0 :(得分:2)

strtotime使用本地时区,除非传递的字符串包含时区信息。格式'Y-m-d H:i:s'的日期不包含时区信息。

strtotime(gmdate('Y-m-d H:i:s'))中,函数strtotime假定传递的字符串指定了本地时区的日期,但它实际上是GMT格式。

答案 1 :(得分:0)

我没有经验,但我会尝试一下。

我的结果是:

2014-07-22 10:21:11
2014-07-22 10:21:11
2014-07-22 08:21:11
2014-07-22 06:21:11

php.ini

中查看您的时区

我在php.ini

date.timezone = Europe/Paris

什么是GMT + 2

gmdate尝试计算GMT日期,所以对我来说(而不是我的时区GMT + 2),它减去了2个小时。然后,当从gmdate结果再次使用strtotime时,它只是做同样的事情。因为我已经设置了GMT + 2,所以它再次减去2小时,因为它想要计算GMT日期。