是的,我有最新的时区数据。它是从2015b时区数据的centos rpm得到的。正如你在下面看到的,它确实有2014年的变化。(我还编译了IANA 2015b的区域文件,结果相同)
是的,我的php.ini和phpcli.ini文件有date.timezone = Europe/Moscow
使用CCD_ 2。
但当我到达时区时,它会在1小时前关闭。
<?php
$zoneFormat = "%z";
$localtime = strftime($zoneFormat, time());
echo "localtime=".$localtime . "n";
输出:
[root@cougar ~]# php qtime.php
localtime=+0400
但如果我对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安装中。时区扩展可在https://pecl.php.net/package/timezonedb