Php时区和列表访问过

时间:2013-12-08 22:21:47

标签: php .htaccess datetime timezone gmt

首先,我想为我的网站设置GMT的默认时区,我找到了这个

htaccess:

php_value date.timezone "America/Chicago"

SetEnv TZ GMT

SetEnv TZ Europe/Amsterdam

(我知道美国/芝加哥不是GMT;))正确的选项应该如何?

第二,我想在注册时保存用户时区,并允许他在个人资料设置中更改时区

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

1 个答案:

答案 0 :(得分:1)

你应该在php.ini中将date.timezone设置为UTC,如果你有权访问它,如果没有,那么在.htaccess中这样做: -

php_value date.timezone UTC

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

您的应用程序应使用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()动态修改时区,因为这会对您的应用产生不可预测的副作用。如果完全使用该特定功能,则应该只在您的应用中使用一次。如果它看起来不止于此,你应该认为它是代码味道。