gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:43:31 28 4
gpt4 key购买 nike

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

情况

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

建议的解决方案

存储

  1. 在应用程序启动时运行以下命令,以便所有日期函数都使用 UTC 时区:date_default_timezone_set('UTC');
  2. $Date = new DateTime(); 获取一个 DateTime 对象,其当前日期和时间为 UTC。
  3. 使用 $Date->format() 获取要插入 MySQL 中 datetime 类型列的值。

显示

  1. 从 JavaScript 中获取用户的时区信息并将其存储在 cookie 中。
  2. 运行 MySQL SELECT 查询以检索日期时间列值。
  3. $Date = new DateTime($row['time']); 用存储的 UTC 时间实例化一个 DateTime 对象。
  4. $Date->setTimezone(new DateTimeZone($userTimezone)); 将UTC时间调整为用户的时区。
  5. 使用 $Date->format();
  6. 显示

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

最佳答案

它还可以变得更简单。既然你用的是JavaScript,那为什么不在客户端也用JavaScript来调整时区呢?

  1. 在服务器上以 UTC 格式存储所有时间
  2. 将它们作为 UTC 提供给客户
  3. 客户端使用 JavaScript 将时间调整到本地时区

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

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

关于php - 在 PHP 中处理在不同时区存储/显示日期的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/518296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com