Rails无视夏令时

bsc*_*fer 1 timezone ruby-on-rails

在夏令时方面,我无法理解Rails的时区支持.

我以UTC格式存储所有数据库时间.存储用户时区,以便它们直接映射回值(即).ActiveSupport::TimeZoneCentral Time (US & Canada)

我想完全忽略夏令时.如果事件始于5:30pm,则始终从5:30pm夏令时是否生效开始.

考虑到所有时间是否统一存储,是否有可能检索数据库时间并在本地显示它们以便完全忽略夏令时?有没有问题我会忽视夏令时?

Mat*_*int 5

我并不是说听起来很迂腐,但......

我想完全忽略夏令时.

那么,你会独自一人.尽管我们有最大的希望和愿望,但现实世界中的大部分都使用夏令时. 你可以在这里获得快速入门.

如果活动在下午5:30开始,则始终在下午5:30开始,无论夏令时是否生效.

5:30为谁?如果你说5:30 UTC,那么肯定.但如果您在美国中部时间说5:30,那么您必须考虑DST.否则,一年半的人会在他们认为是5:30的时候出现在你的活动中,你认为是6:30.

考虑到所有时间是否统一存储,是否有可能检索数据库时间并在本地显示它们以便完全忽略夏令时?

您将时间存储在UTC中,这很好.当你在本地显示出来,你应该不会忽视DST.

有没有问题我会忽视夏令时?

是的,人们通常不了解这一点.一般来说,如果您参考当地时间,那么您的意思是他们的本地时间.如果您在该计算中未包含DST,那么您对于您正在谈论的时间存在分歧.

另一个建议,您可能要考虑使用TZInfo gem而不是ActiveSupport::TimeZone.然后,您将使用IANA标识符存储时区选择,例如America/Chicago.这些在Rails之外是可识别的.

由于某些无法解释的原因,ActiveSupport人员认为他们应该将时区限制为他们认为"有意义"的146个值.但是他们没有解释他们的过程,他们似乎没有在维护之上. 我问过为什么,但没有得到太多详细的回应.

您可能还希望查看时区标签wiki.