这个问题出现在俄罗斯开始使用GMT+4时间之后。
我的主机服务器时间是欧洲/莫斯科。
当我从PHP打印日期('d/m/Y H: I ')时,它返回正确的莫斯科时间。
但是当我尝试在日期('O')的帮助下以小时为单位获得格林威治时间(GMT)的差异时,我得到的是+0300(我认为应该是+0400)。看这里:http://localtimes.info/Europe/Russia/Moscow/Moscow/- 当前时区偏移量:+04:00 )。
问题:为什么?是我做错了还是主人的问题?
莫斯科时间的正确UTC偏移量为UTC +0400
:
2011年,俄罗斯政府宣布,未来将全年实行夏令时,从而有效地取代标准时间——政府声称,此举是出于对健康的担忧,原因是标准时间和夏令时之间每年都在来回转换。[1] 2011年3月27日,莫斯科人将他们的时钟调快最后一次,有效地观测MSD,或UTC+4,永久地。
我认为这与time .db的底层库或服务器系统本身有关。试试这个测试脚本(Demo):
date_default_timezone_set('Europe/Moscow');
echo date('d/m/Y H:i O'), "'n";
echo 'timezone default: ', date_default_timezone_get(), "'n";
echo 'timezone version: ', timezone_version_get();
示例输出:
05/11/2011 22:39 +0400
timezone default: Europe/Moscow
timezone version: 0.system
如果在您的服务器上显示错误的值,请联系管理员和/或更新系统。
Edit:这个测试脚本使用了一个PHP 5.3函数:timezone_version_get
。安装了pecl timezonedb后的输出为:
05/11/2011 23:17 +0400
timezone default: Europe/Moscow
timezone version: 2011.14