我将所有日期时间值存储为 unix 时间戳。注册用户可以在他们的个人资料中设置个人 GMT 区域设置。我应该怎么做才能在用户的 GMT 语言环境中显示网站上的所有日期时间?
谢谢
没有“用户的 GMT 语言环境”之类的东西。您必须指的是用户的timezone。
您可以通过以下方式将 unix 时间戳转换为用户时区中的日期:
$timestamp = ...;
$tz = new DateTimezone("Europe/Lisbon"); //substitute by the user's timezone
$d = new DateTime("@$timestamp");
$d->setTimezone($d);
echo $d->format(DateTime::RFC822);
如果您只有 GMT 偏移量,您可以使用:
$tz = new DateTimezone("Etc/GMT-12");
但是请注意,如果您使用 GMT 偏移量,则必须在用户进入或离开夏令时时更改它们。
使用 PHP:
date("Y-m-d H:i:s", $timestamp);
使用 MySQL:
FROM_UNIXTIME()