当前位置:  开发笔记 > 编程语言 > 正文

在PHP中处理在不同时区存储/显示日期的最佳方法?

如何解决《在PHP中处理在不同时区存储/显示日期的最佳方法?》经验,为你挑选了1个好方法。

在过去的几个小时里,我一直在阅读这个主题,我想我已经掌握了它,但我想要一些确认.

情况

我希望加利福尼亚州的用户能够发布将存储在MySQL中的评论.然后,我希望德克萨斯州的用户能够查看评论,并将发布日期调整到他或她的时区.

提出的解决方案

存储

    在应用程序开始时运行以下命令,以便所有日期函数都使用UTC时区: date_default_timezone_set('UTC');

    $Date = new DateTime(); 获取具有UTC当前日期和时间的DateTime对象.

    使用$Date->format()来获取值插入到MySQL中的datetime类型列.

显示

    从JavaScript获取用户的时区信息并将其存储在cookie中.

    运行MySQL SELECT查询以检索datetime列值.

    $Date = new DateTime($row['time']); 使用存储的UTC时间实例化DateTime对象.

    $Date->setTimezone(new DateTimeZone($userTimezone)); 将UTC时间调整为用户的时区.

    显示使用 $Date->format();

这是必须做的事情的要点吗?我错过了更好的解决方案吗?谢谢你的帮助!



1> aleemb..:

它可以变得更简单.既然您使用的是JavaScript,那么为什么不使用JavaScript来调整客户端上的时区呢?

    以UTC格式在服务器上存储所有时间

    以UTC身​​份为客户提供服务

    客户端使用JavaScript调整本地时区的时间

这不仅使事情变得更简单,而且还克服了模型的问题.如果我在纽约注册我的帐户但是前往澳大利亚,我希望看到澳大利亚时区的时间.事实上,使用您使用的JavaScript可以轻松调整设置,使设计更加动态.其次,您可以避免存储用户时区的开销.

也就是说,如果您希望您的设计降级到非JavaScript浏览器,那么您最好采用依赖HTTP cookie的完整服务器端方法(而不是依靠JS来获取cookie).


如果您正在使用Angular JS,则可以设置过滤器来调整模板中提供的日期.
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有