htaccess:
php_value date.timezone "America/Chicago"
SetEnv TZ GMT
SetEnv TZ Europe/Amsterdam
(我知道美国/芝加哥不是GMT;))正确的选项应该如何?
答案 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()
动态修改时区,因为这会对您的应用产生不可预测的副作用。如果完全使用该特定功能,则应该只在您的应用中使用一次。如果它看起来不止于此,你应该认为它是代码味道。