【发布时间】:2011-05-03 15:10:02
【问题描述】:
我正在尝试排除故障并解决此问题: 我正在使用的服务器(Linux 上的 php 5.2.9)具有正确的当地时间(美国/布宜诺斯艾利斯):
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(总是提前一小时)。我在这里和网络上找到的所有内容都指向
- date_default_timezone_set(我试过了)
- 在 php.ini 中设置 date.timezone(已设置)
- 将服务器时间与客户端时间混淆(我不是)。
有什么想法吗?
编辑: 正如建议的那样,我检查了,正如您在代码中看到的那样,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)
【问题讨论】:
-
同时检查夏令时设置。
-
谢谢,PHP 确实在使用夏令时。我会更新问题。
-
(tipp) 使用
error_reporting(-1);将显示所有可能的错误,即使在未来的 PHP 版本中添加了新的级别和常量。 -
@Gordon:谢谢,我知道。我喜欢明确说明错误报告级别。