当用PHP更改默认时区时,应该在完成后将其改回


When changing the default timezone with PHP, should one change it back once done?

假设我想检查用户是否在特定时间段内登录(例如,在某个时间段内不允许登录),但我想根据我的时区进行检查。

我会做以下事情:

        $time = ...; // Get the start and end times for our application logic
        date_default_timezone_set('America/New_York');
        $currTime = new DateTime();
        $startTime = new DateTime($time['StartTime']);
        $endTime = new DateTime($time['EndTime']);
        if($currTime > $startTime && $currTime < $endTime) { ... }

我们是否应该重置default_timezone(先重置get,然后再次设置)?以上仅适用于函数吗?

无需再次设置,它是在运行时设置的,并且只在调用脚本的范围内。

根据您的评论回复。

尝试将一个文件(php.ini)添加到您的托管帐户文件夹中,它应该就在您的webroot之外,用户在下面的示例中。

把这行加到上面。

date.timezone="美国/纽约"

/home/user/public_html/

会发生两件事中的一件,要么它不起作用,要么什么都没冒,要么希望它能为你设置全账户的时区,并节省你在脚本中处理时区的时间,除非你在用例基础上明确需要这样做。