python - 构建启用时区的应用程序时的最佳实践

标签 python datetime time timezone

我正在构建一个支持时区的 Web 应用程序,我正在寻找相关的最佳实践。

例如,我有用户 A 和用户 B,他们设置了时区。用户 A 输入时间。 (在他的时区。)现在如何将其存储在数据库中。

  • [选项 1] 原始时区的原始时间
  • [选项 2] UCT 时间存储在 UCT 中。

用例是

  • 这次需要显示用户 A。
  • 这次需要显示用户 B。
  • 这次需要显示匿名用户。
  • 需要计算时区差异。

我可以看到两种方式的优点。我并不是特别在寻找这个问题的答案,而是在特别寻找有关构建时区感知网络应用程序的信息。

我正在使用 Python,但也在寻找与语言无关的技巧。

最佳答案

从语义上讲,您操作的几乎所有日期时间都是绝对时间(例如:计费、创建和修改、最后一次看到、api throttles、SO 赏金……)。它们应该存储在 UTC 中,这样它们就不会产生歧义。否则,当某些政府更改 DST 规则并且您的系统规则得到更新时,您存储的值将改变含义。

如果日期时间也指时间和地点(例如 session 、一般日历),您可以将完整的符号日期存储在 RFC 3339 中。 ,包括时区名称(与 UTC 偏移量不同),并按需转换为 UTC。

关于python - 构建启用时区的应用程序时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4353925/

相关文章:

java - 在给定时间值中将小时与分钟分开

JavaScript 时差

python - 在 python 中反转字典不起作用

Python:在字符串中查找字符串,然后返回其周围的字符串

python - 在 SQLite3 中添加列,然后填充它

java - 为什么 DateTime 字段上的 getTimestamp 返回的结果与选择 unix_timestamp 的结果不同?

MySQL - 使用 current_date 和特定时间创建日期时间

c# - .net 特定于文化的 12/24 小时格式

Python 警告 : Retrying (Retry(total=4, 连接 = 无,读取 = 无,重定向 = 无,状态 = 无))

asp.net - 为什么 Time.strptime() 返回当前日期?