设置PHP';的默认时区


Setting PHP's default timezone

在我的web应用程序中,我让用户从列表(包含PHP支持的所有时区)中选择他们喜欢的时区。

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

default_date_timezone_set($_POST['timezone']);

但当我重新加载页面时,它会回到以前的状态(例如Europe/Moscow)。我必须在每个脚本中设置默认时区吗?还是函数(default_date_timezone_set)工作不正常?谢谢

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

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

设置一个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);