下面是一个脚本,在每个语句旁边的注释中包含每一行的输出,以演示我的问题
<?php
echo date_default_timezone_get(); //Europe/Helsinki
date_default_timezone_set('Africa/Cairo');
$script_tz = date_default_timezone_get();
if (strcmp($script_tz, ini_get('date.timezone'))){
echo "\nScript timezone differs from ini-set timezone."; //True, this block is ran
} else {
echo "\nScript timezone and ini-set timezone match.";
}
echo "\n".date_default_timezone_get(); //Africa/Cairo
echo "\n'".ini_get('date.timezone')."'"; //''
echo "\n".date('Z'); //10800
echo "\n".date("m/d/Y h:i:s A T",strtotime("-1 hour")); //I still have to do this to obtain the correct date !
?>我现在在开罗,在那里我们已经三年没有DST了。服务器的时区设置正确,DST选项甚至无法启用或禁用DST。所以它天生就是残疾人。这里有一个屏幕截图来演示

在我的php.ini文件中
[Date]
; Defines the default timezone used by the date functions
;date.timezone =我的php版本是
PHP 5.2.17 (cli) (built: Jan 6 2011 17:28:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologiesdate()输出(即减少一个小时)才能得到与服务器时间匹配的正确时间?Europe/Helsinki是我的时区?发布于 2013-09-02 08:52:47
DST信息存储在timezonedb中,这是一个默认情况下每个PHP安装都附带的数据库。因为您的PHP版本非常古老,而且您说您的国家的DST设置最近发生了变化,timezonedb已经过时了。它需要通过更新PHP本身或通过PECL更新数据库来保持更新。
见http://php.net/manual/en/datetime.installation.php,http://pecl.php.net/package/timezonedb,如何安装PECL扩展。
发布于 2013-09-02 08:38:33
你可以在你的约会函数上使用“e”。
时区
或者你可以用“i”来表示DST
源;http://php.net/manual/en/function.date.php
希望这解决了你的问题:)
https://stackoverflow.com/questions/18568791
复制相似问题