这是一个脚本,每行的输出都在每个语句旁边的注释中,以演示我的问题
<?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
是我的时区? - 这可能与 Apache 有什么关系吗?