检查PHP是否已调用date_default_timezone_set()

时间:2013-09-13 09:30:08

标签: php date timezone

有没有人知道PHP中的一个方法,我可以检查先前代码中是否已调用date_default_timezone_set()

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

当在php.ini中设置时区时,我根本不需要运行date_default_timezone_set()。当它没有在php.ini中设置时,一些先前的代码可能使用date_default_timezone_set()设置了日期时间。在这种情况下,代码再次不需要再设置时区。但是当没有设置时区时,必须设置一个时区。问题是date_default_timezone_get()在这种情况下不返回空值,但是 - 取决于PHP版本 - “UTC”或服务器的本地时区。

1 个答案:

答案 0 :(得分:0)

注意,调用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()

进行区分,则不应使用date_default_timezone_set()

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