我必须用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时间,这是一个国际网站。
答案 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日期。