设置PHP的默认时区

时间:2012-03-12 20:22:50

标签: php time timezone

在我的网络应用中,我让用户从列表中选择他们的首选时区(包含all timezones that PHP supports)。

假设$_POST['timezone']是所选的时区(例如 America/New_York)。 我使用以下代码设置它,不会产生错误:

default_date_timezone_set($_POST['timezone']);

但是当我重新加载页面时,它会回到之前的状态(例如 Europe/Moscow)。 我是否必须在每个脚本中设置默认时区,或者功能(default_date_timezone_set)是否正常工作? 谢谢!

3 个答案:

答案 0 :(得分:2)

此功能仅更改脚本执行的时区。 您可以将时区存储在会话变量中,并将时区设置在每个页面的顶部。

答案 1 :(得分:1)

您应该将其保存在数据库中,并在任何时间相关时设置时区。它运作正常。它只应该为该脚本执行设置它(一个HTTP请求)。

答案 2 :(得分:1)

设置包含用户选择的时区的Cookie。

/// Make sure you sanitize all POST/COOKIE variables if needed.
$timezone = $_COOKIE['timezone'];

if(isset($_POST['timezone'])) {
    /// Set cookie for some amount of time -- I chose 2 weeks
    setcookie('timezone',$_POST['timezone'],time()+60*60*24*14);
    $timezone = $_POST['timezone'];
}

default_date_timezone_set($timezone);