在PHP中处理在不同时区存储/显示日期的最佳方法?
在过去的几个小时里,我一直在阅读这个话题,我想我已经掌握了它,但我想得到一些确认。
情况
我希望加利福尼亚州的用户能够发布将存储在MySQL中的评论。然后,我希望德克萨斯州的用户能够查看评论,并将发布日期调整为他或她的时区。
建议的解决方案
存储
- 在应用程序启动时运行以下命令,以便所有日期函数都使用 UTC 时区:
date_default_timezone_set('UTC');
-
$Date = new DateTime();
以获取当前日期和时间(以 UTC 为单位)的 DateTime 对象。 - 用于获取要插入到 MySQL 中的日期时间类型列中的值。
$Date->format()
显示
- 从 JavaScript 获取用户的时区信息,并将其存储在 Cookie 中。
- 运行 MySQL SELECT 查询以检索日期时间列值。
-
$Date = new DateTime($row['time']);
以使用存储的 UTC 时间实例化 DateTime 对象。 -
$Date->setTimezone(new DateTimeZone($userTimezone));
将 UTC 时间调整为用户的时区。 - 显示使用
$Date->format();
这是必须做的要点吗?我是否缺少更好的解决方案?感谢您的帮助!