php strtotime 时区问题,部分年份 utc时区和PRC时区相差9小时

$timeStr='1987-5-4';
echo '测试时间:'.$timeStr;
echo PHP_EOL;
$prcTime=strtotime($timeStr);
echo 'PRC时间:';
echo $prcTime;
echo PHP_EOL;
date_default_timezone_set('UTC');
$utcTime=strtotime($timeStr);
echo 'UTC时间:';
echo $utcTime;
echo PHP_EOL;
echo 'UTC与PRC时间相差:'.(($utcTime-$prcTime)/3600).'小时';
echo PHP_EOL;

结果:

测试时间:1987-5-4

PRC时间:547052400

UTC时间:547084800

UTC与PRC时间相差:9小时


经测试,1987年-1991年的日期,UTC与PRC时间相差都为9小时。

php版本是 

PHP 7.1.9 (cli) (built: Aug 30 2017 18:34:46) ( ZTS MSVC14 (Visual C++ 2015) x64 )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies


提问者刘强我来回答
1回答
刘强
回复刘强赞同02星期前1楼

忘了提问题了,请问这是什么原因造成的? 怎么处理这个bug?

  • jesse
    我们在东八区,PHP时间是从0区开始的所以会差八个小时(PS:初中地理知识没学好),解决办法: 1、修改PHP配置文件 2、使用date_default_timezone_set
  • 刘强
    嗯,是相差8小时,但是 这里是PRC东八区与UTC 相差9小时,而且只是部分年份(1987年-1991年),
首页上一页1下一页尾页

PHP中文网

未登录