Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Europe/Moscow zoneinfo文件的PHP strftime(“z”,time())给出了错误的GMT偏移量_Php_Timezone - Fatal编程技术网

Europe/Moscow zoneinfo文件的PHP strftime(“z”,time())给出了错误的GMT偏移量

Europe/Moscow zoneinfo文件的PHP strftime(“z”,time())给出了错误的GMT偏移量,php,timezone,Php,Timezone,是的,我有最新的时区数据。从centos rpm获取2015b时区数据。正如你在下面看到的,它确实有2014年的变化。 (我还根据IANA编制了2015b的区域文件,结果相同) 是的,我的php.ini和phpcli.ini文件具有date.timezone=Europe/Moscow 使用PHP5.5.10,Httpd:2.4.9 但当我到达时区时,它会被关闭1小时 <?php $zoneFormat = "%z"; $localtime = strftime($zoneFormat,

是的,我有最新的时区数据。从centos rpm获取2015b时区数据。正如你在下面看到的,它确实有2014年的变化。 (我还根据IANA编制了2015b的区域文件,结果相同)

是的,我的php.ini和phpcli.ini文件具有
date.timezone=Europe/Moscow

使用
PHP5.5.10,Httpd:2.4.9

但当我到达时区时,它会被关闭1小时

<?php
$zoneFormat = "%z";
$localtime = strftime($zoneFormat, time());
echo "localtime=".$localtime . "\n";
但如果我对samll c程序也这样做:

[root@cougar ~]# cpptime
Result string is "2015 04 01 22:40:20 MSK:+0300"
如果我从getTransitions()调用中转储数组,它将在2011年停止

其他任何人在PHP中使用2015b中的欧洲/莫斯科地区信息文件遇到了这个问题

Europe/Moscow  Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800
Europe/Moscow  Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
Europe/Moscow  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
Europe/Moscow  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
Europe/Moscow  Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 06:14:07 2038 MSK isdst=0 gmtoff=10800
Europe/Moscow  Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 06:14:07 2038 MSK isdst=0 gmtoff=10800

事实证明,有两种方法可以解决这个问题。因为PHP有自己的时区文件副本,不使用系统的时区文件

1) 将PHP升级到包含最新时区数据库的版本

2) 或者将时区扩展添加到我的php安装中。时区扩展可在以下位置找到:

Europe/Moscow  Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800
Europe/Moscow  Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
Europe/Moscow  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
Europe/Moscow  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
Europe/Moscow  Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 06:14:07 2038 MSK isdst=0 gmtoff=10800
Europe/Moscow  Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 06:14:07 2038 MSK isdst=0 gmtoff=10800