我正在构建一个支持时区的 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/