Php时区和访问列表


Php timezones and list visited

首先,我想为我的网站设置GMT的默认时区,我发现

htaccess:

php_value date.timezone "America/Chicago"
SetEnv TZ GMT
SetEnv TZ Europe/Amsterdam

(我知道美国/芝加哥不是格林尼治标准时间;)正确的选择应该是什么样子?

其次,我想在用户注册时保存时区,并允许他在配置文件设置中更改时区

最后,如何使用用户选择的时区?我将网站上的所有时间保存为unix时间戳(time())

如果您有权访问date.timezone,则应在php.ini中将其设置为UTC,如果没有,则在.htaccess中这样做:-

php_value date.timezone UTC

除非您另有指定,否则您的应用程序现在将默认使用UTC作为时区。您可以使用此列表中的字符串存储用户时区。只需允许用户从下拉列表中选择正确的即可。

您的应用程序应该使用unix或mysql时间戳将所有日期/时间存储为UTC。我个人更喜欢unix时间戳。

向用户显示日期时,请使用DateTime类。例如:-

$timeZoneString = getTimeZoneFromDB();
$tz = new 'DateTimeZone($timeZoneString);
$date = (new 'DateTime())->setTimeZone($tz);
echo $date->format('Y-m-d H:i:s);

您不应该使用date_default_timezone_set()动态修改时区,因为这可能会对您的应用程序产生不可预测的副作用。如果该特定功能被使用,那么它应该只在你的应用程序中使用一次。如果它出现的不止这些,您应该将其视为代码气味。