我在过去的几个小时里一直在阅读这个话题,我想我已经掌握了它,但我想要一些确认。在PHP中处理不同时区中存储/显示日期的最佳方法?
形势
我想,说,加州用户能够发布将存储在MySQL评论。然后,我希望德克萨斯州的用户能够查看评论,并根据他或她的时区调整发布日期。
建议的解决方案
存储
- 运行的应用程序的启动下,使所有日期函数都使用UTC时区:
date_default_timezone_set('UTC');
$Date = new DateTime();
获取与DateTime对象UTC中的当前日期和时间。- 使用
$Date->format()
来获取插入到MySQL中的日期时间类型列的值。
显示
- 从JavaScript获取用户的时区信息并将其存储在cookie中。
- 运行MySQL SELECT查询以检索日期时间列值。
$Date = new DateTime($row['time']);
使用存储的UTC时间实例化DateTime对象。$Date->setTimezone(new DateTimeZone($userTimezone));
将UTC时间调整到用户的时区。- 显示使用
$Date->format();
那是有感而发的要点做?我错过了更好的解决方案吗?谢谢你的帮助!
我想我会在用户登录时设置时区cookie,因此如果您前往澳大利亚并从那里登录,它应该会更新。 您是否建议在页面加载时运行一些JavaScript,例如查找中的时间并将它们全部转换为实时? – 2009-02-05 23:47:33