时区应该存储为字符串还是整数偏移量?

时间:2013-01-09 06:24:25

标签: ruby-on-rails-3 timezone

为了将用户的时区存储在Rails应用程序的数据库中,存储数字偏移量(即-8)或名称(太平洋时间(美国和加拿大))会更好吗?

存储名称允许应用程序更好地处理DST,但是如果将来Rails更新并且时区的名称不同会怎么样?

1 个答案:

答案 0 :(得分:0)

您应该使用时区名称。不要担心时区名称的变化。他们不会改变。你维护timezone database的人似乎有坚定的承诺来保留后向兼容性名称。例如,在此过程中添加了America/New_York等新名称,但US/Eastern之类的“旧”名称仍然可用。此外,时区定义支持时区,其中规则在不同时间是不同的,因此即使一个时区中的规则被更新,过去日期的本地时间也应保持不变(除非更改规则以纠正错误)定义)。

存储数字偏移量与存储特定时间戳一起使用是合适的,因为它允许轻松无误地转换到UTC,并且同一时区中不同日期的偏移值无关紧要。