0

我的服务器是中央时间,我正在尝试显示尼日利亚阿布贾的事件(显示在他们的时间)。

我用于显示正确时区的 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 数据具有正确的 date/time <pubDate>Fri, 01 Nov 2013 18:00:00 WAT</pubDate>。值得注意的是,我使用的是 Windows 服务器、IIS 7 和 PHP 5.3.10。

WAT 不使用夏令时。即使是这样,那么时间也只有1个小时的休息时间和2个小时的休息时间。我们最终不得不在 XML 中输入不正确的时间,以便 PHP 显示正确的时间。

关于有什么问题的任何想法?

4

1 回答 1

1

PHP 中的时区数据库已被弃用。您可以做的最好的事情是将 PHP 升级到最新的 5.3。除了最新的时区,您将获得所有最新的安全修复 - 版本 5.3.10 相当旧,并且修复了很多安全问题。

不幸的是,在 Windows 上只更新 PHP 中的 timezones db 是不可能的,因为它被编译成二进制文件。

于 2013-07-08T22:11:38.163 回答