gpt4 book ai didi

mysql - 客户端->服务器时差和时间存储

转载 作者:行者123 更新时间:2023-11-29 22:56:57 26 4
gpt4 key购买 nike

我正在开发一个客户端应用程序,当用户阅读某些内容时,我会将其“保存”到数据库中,包括时间和日期。起初我想到使用 NOW() (mysql) 并让服务器/数据库完成艰苦的工作,但后来我意识到服务器时间和客户端时间之间存在差异。

为了克服这个问题,每当我调用在数据库中存储此信息的 API 时,我都会将客户端日期时间作为参数之一传递。当然没什么大不了的,我只是想知道,有更好的方法吗?

最佳答案

您可以控制服务器吗?

您无法确保客户端的日期/时间正确,因此请使用服务器时间(即使在给定点正确,它也可能会发生变化,并给您带来不一致的结果)。

服务器和客户端时间不同的唯一有效原因是它们位于不同的时区(如果由于其他原因而不同,则这是客户端的问题,而不是您的问题)。

解决方案是将客户端时区与 UTC(时间戳)时间一起存储在服务器上,并让数据库或您的脚本进行转换,以向客户端显示正确的日期/时间。

我不太了解 mysql 处理日期/时间值的方式,但似乎您无法自动存储时区和时间值,因此您必须手动执行此操作:

  • 创建附加到每个客户端的时区列。
  • 每当您在 mysql 中存储日期/时间时,都会将其从服务器时区转换为 UTC:GMT+0(Mysql 可能会自动执行此操作)。
  • 每当客户端检索日期/时间时:获取 UTC 时间和时区,然后进行转换(这可以在客户端或服务器端完成)。

大多数网络语言都有管理日期/时间和时区的标准方法。

您还可以设置 mysql session 时区,如下所示:mysql timestamp tutorial但我认为第一个解决方案更灵活并且不依赖于mysql。

我希望现在更清楚了。

关于mysql - 客户端->服务器时差和时间存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678780/

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