有谁知道PHP中的方法,我可以检查date_default_timezone_set()
是否已在以前的代码中调用?
我可以通过调用 php .ini检查 php 中设置的时区ini_set()
,但是当我使用 date_default_timezone_get()
时,系统要么为我猜测时间,要么返回我设置的时间,我看不出如何区分两者。
在 php 中设置时区时.ini我根本不需要运行date_default_timezone_set()
。当它不是在 php.ini 中设置时,那么一些先前的代码可能已经使用 date_default_timezone_set()
设置了日期时间。在这种情况下,代码同样不需要再次设置时区。但是,如果未设置时区,则必须设置时区。问题是date_default_timezone_get()
在这种情况下不会返回空值,而是 - 取决于 PHP 版本 - "UTC"或服务器的本地时区。
请注意,调用date_default_timezone_set()
不会影响全局 ( .ini
) 设置,因此您可以通过ini_get()
函数进行检查:
if(date_default_timezone_get()!=ini_get('date.timezone'))
{
//date_default_timezone_set() was used
}
但是,如果您将使用 ini_set()
- 这将不起作用(如果我理解正确,您在问题中已经描述了这个问题),因为它会更改当前脚本实例的 ini 设置(但是,原因,不是 ini-file 本身)。所以,我认为,如果你想使用date_default_timezone_set()
来区分,你不应该使用ini_set()
编辑:如果您的date.timezone
未在php.ini
中设置,那么您可以在应用程序启动时使用ini_set()
(因此仅使用一次) - 设置此设置。