2

有谁知道 PHP 中的一种方法,我可以在其中检查date_default_timezone_set()先前代码中是否已调用该方法?

我可以通过调用来检查 php.ini 中设置的时区ini_set(),但是当我使用date_default_timezone_get()系统时,要么为我猜测时间,要么返回设置的时间,我看不出如何区分两者。

在 php.ini 中设置时区时,我根本不需要运行date_default_timezone_set()。如果未在 php.ini 中设置,则某些先前的代码可能已使用date_default_timezone_set(). 在这种情况下,代码也不需要再次设置时区。但是,如果没有设置时区,则必须设置一个。问题是date_default_timezone_get()在这种情况下不会返回空值,而是 - 根据 PHP 版本 - 'UTC' 或服务器的本地时区。

4

1 回答 1

1

请注意,调用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本身)。ini_set()所以,我认为,如果你想区别使用,你不应该使用thendate_default_timezone_set()

编辑:如果您date.timezone没有设置php.ini,那么您可以ini_set()在应用程序启动时使用(所以只使用一次) - 设置此设置。

于 2013-09-13T10:07:13.797 回答