我正在尝试排查并解决此问题: 我正在处理的服务器(Linux上的PHP 5.2.9),具有正确的本地时间(America / Buenos_Aires):
user@server [/home/site/public_html]$ date
Mon Nov 1 17:11:14 ART 2010
php.ini
设置为date.timezone = "America/Buenos_Aires"
我还尝试使用
<?php
ini_set('display_errors', true);
error_reporting(E_ALL|E_STRICT|E_NOTICE);
//date_default_timezone_set("America/Buenos_Aires");
//echo date_default_timezone_get(), "<br>";
echo "ini: ", ini_get('date.timezone'), "<br>";
$now = date("H:i:s T I");
$nowdate = date("Y-m-d");
echo $nowdate." ".$now;
?>
但无济于事,结果是
ini: America/Buenos_Aires
2010-11-01 18:11:14 ARST 1
何时应该阅读17:11
(它始终提前一小时)。我在这里和网上找到的所有内容都指向
有什么想法吗?
修改 正如所建议的那样,我检查过,正如你在代码中看到的那样,PHP认为应该应用DST,而阿根廷决定今年不再应用它。除了等待修补程序之外的任何选项?
编辑2: 我尝试按照建议转储时区转换。我得到了以下内容:
The timezone America/Buenos_Aires switches to standard time on 20 Mar 2011 @ 02:00.
The new GMT offset will be: -10800 (ART)
答案 0 :(得分:10)
几天前有a question表明PHP还没有得到阿根廷got rid of DST only this year这个事实。似乎这个决定还没有进入代码库。 (但是没有得到确认,所以不是100%清楚这是不是。)
也许以同样的方式尝试dumping your time zones,看看它是否也适用于您的PHP版本。
更新:这确实是问题所在。我能想到的最好的解决方案是在时区中使用偏移,例如Etc/GMT-3
有人应该向bugs.php.net提交一个错误,似乎没有这个。