我的服务器是中央时间,我正在尝试为尼日利亚阿布贾展示一个活动(在他们的时间显示)。
我显示正确时区的PHP代码如下......
// since our server is central time we have to make the server think it's in a different time zone or it will display all times using the central offset
// date_default_timezone_set("bleh") is used to do this
// php supported time zones (http://us3.php.net/manual/en/timezones.php)
// you have to specify every time zone (even odd-balls like Napal) if you want every time zone to work correctly
if ($pubDatetimezone == "PST" || $pubDatetimezone == "PDT") date_default_timezone_set("America/Los_Angeles");
if ($pubDatetimezone == "MST" || $pubDatetimezone == "MDT") date_default_timezone_set("America/Denver");
if ($pubDatetimezone == "CST" || $pubDatetimezone == "CDT") date_default_timezone_set("America/Chicago");
if ($pubDatetimezone == "EST" || $pubDatetimezone == "EDT") date_default_timezone_set("America/Montreal");
// shows the incorrect time but the correct time zone (WAT)
if ($pubDatetimezone == "WAT") date_default_timezone_set("Africa/Lagos");
// displays the correct time but the incorrect time zone (AZOT)
// if ($pubDatetimezone == "WAT") date_default_timezone_set("Atlantic/Azores");
美国时区工作得很好,但非洲时区显示不正确。日期/时间应显示Friday, November 01, 2013 @ 6:00pm WAT
,但显示Friday, November 01, 2013 @ 8:00pm WAT
。
我的服务器时间非常正确(在正确时间和正确时区的几分钟内)。我导入的XML数据具有正确的日期/时间<pubDate>Fri, 01 Nov 2013 18:00:00 WAT</pubDate>
。值得注意的是,我使用的是Windows服务器,IIS 7和PHP 5.3.10。
WAT不使用夏令时。即使它确实如此,那么时间只有1小时,而且是2小时。我们最终不得不在XML中输入错误的时间,以便PHP显示正确的时间。
关于什么是错的任何想法?
答案 0 :(得分:1)
PHP中的timezones数据库已弃用。您可以做的最好的事情是将PHP升级到最新的5.3。除了最新的时区,您还可以获得所有最新的安全修复程序 - 版本5.3.10非常陈旧,并且修复了很多安全问题。
不幸的是,在Windows上用PHP更新时区db是不可能的,因为它被编译成二进制文件。