这是一个脚本,每个语句旁边的注释中每行的输出都是为了演示我的问题
<?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约3年了。服务器的时区设置正确,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 Technologies
date()
输出(即减少一小时)以获得与服务器时间匹配的正确时间?Europe/Helsinki
是我的时区?答案 0 :(得分:2)
DST信息存储在timezonedb中,默认情况下,每个PHP安装都附带一个数据库。由于您的PHP版本非常古老,并且您说您所在国家/地区的DST设置最近已更改,因此timezonedb已过时。它需要通过更新PHP本身或通过PECL更新数据库来保持更新。
请参阅http://php.net/manual/en/datetime.installation.php,http://pecl.php.net/package/timezonedb,How to install PECL extensions。
答案 1 :(得分:0)
您可以在日期功能上使用“e”。
时区--- --- e时区标识符(在PHP 5.1.0中添加)示例:UTC,GMT,Atlantic / Azores
或者您可以使用“我”代替DST
源; http://php.net/manual/en/function.date.php
希望这能解决你的问题:)