【发布时间】:2013-01-09 06:24:24
【问题描述】:
为了在 Rails 应用程序的数据库中存储用户的时区,存储数字偏移量(即 -8)还是名称(太平洋时间(美国和加拿大))更好?
存储名称可以让应用程序更好地处理 DST,但如果将来 Rails 更新并且时区名称不同怎么办?
【问题讨论】:
为了在 Rails 应用程序的数据库中存储用户的时区,存储数字偏移量(即 -8)还是名称(太平洋时间(美国和加拿大))更好?
存储名称可以让应用程序更好地处理 DST,但如果将来 Rails 更新并且时区名称不同怎么办?
【问题讨论】:
您应该使用时区名称。不要担心时区名称会改变。他们不会改变。您维护timezone database 的人似乎有一个坚定的承诺,如果他们这样做的话,他们会保留向后兼容的名称。例如,像America/New_York 这样的新名称被添加,但像US/Eastern 这样的“旧”名称仍然有效。此外,时区定义支持不同时间规则不同的时区,因此即使一个时区的规则更新,过去日期的本地时间也应保持不变(除非更改规则以更正定义)。
存储数字偏移量与存储特定时间戳结合使用是合适的,因为它允许与 UTC 进行简单而明确的转换,并且在同一时区的不同日期的偏移量值是无关紧要的。
【讨论】: