2015-04-01 58 views
2

是的,我有最新的時區數據。從2015b時區數據的centos rpm得到它。它確實有2014年的變化,你可以看到下面。 (我還彙編了IANA區域文件與相同的結果2015B)歐洲/莫斯科zoneinfo文件的PHP strftime(「%z」,time())給出了錯誤的GMT偏移量

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

使用PHP 5.5.10, Httpd: 2.4.9

但是,當我得到時區的時間是1小時。

<?php 
$zoneFormat = "%z"; 
$localtime = strftime($zoneFormat, time()); 
echo "localtime=".$localtime . "\n"; 

給出的輸出:

[[email protected] ~]# php qtime.php 
localtime=+0400 

但是,如果我做同樣的一個samll C程序:

[[email protected] ~]# cpptime 
Result string is "2015 04 01 22:40:20 MSK:+0300" 

如果我轉儲從getTransitions陣列()調用它在2011年停止。

任何人都遇到了這個與來自2015b在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 

回答

2

那麼,事實證明,有2個選項來解決這個問題。由於PHP擁有自己的時區文件副本,並且不使用系統的時區文件。

1)將PHP升級到具有最新時區數據庫的版本。

2)或者添加時區擴展到我的PHP安裝。時區擴展可以在https://pecl.php.net/package/timezonedb

相關問題