检查 PHP 是否调用了 date_default_timezone_set()


Check in PHP if date_default_timezone_set() has been called

有谁知道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()(因此仅使用一次) - 设置此设置。