在我的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);