gpt4 book ai didi

ruby-on-rails - Rails 在哪里存储夏令时的开始和结束日期?

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:13 25 4
gpt4 key购买 nike

我使用的是 Rails 5,我的应用程序的时区设置为巴西利亚。

巴西现在是冬天(没有夏令时)

Time.current.dst?返回 false

但是在巴西,夏令时从 2018 年 10 月 21 日开始,所以当我这样做的时候

(Time.current + 10.days).dst?我希望它返回 true , 但它返回 false .

是否有表格可以让我查看 Rails 考虑的开始结束日期和每个时区的夏令时?

或者再举个例子。我了解 UTC 没有夏令时。所以

Time.current.strftime(%Z)返回 -3这是 UTC 和当前巴西时间之间的正确时差。

但是当我这样做的时候

(Time.current+10.days).strftime(%Z)仍然返回 -3但那个日期是在巴西更改时间之后,所以它应该是-2 .好像哪里不对。

最佳答案

根据 the Rails documentation :

The TimeZone class serves as a wrapper around TZInfo::Timezone instances.

TZInfo::Timezone 实例是通过 Ruby TZInfo 提供的 gem 。 TZInfo 的数据在单独的 TZInfo-Data package 中提供。 .保持最新状态将使您的时区数据准确无误。此数据来源于the IANA time zone database (TZDB) ,就像大多数其他编程语言一样。

请注意,通常最好直接将 IANA 时区标识符与 tzinfo gem 一起使用,因为 Rails 时区仅限于“134 个时区的有意义的子集”(根据相同的文档),但包含许多重复和遗漏,并且没有提供关于“有意义”的含义的标准。有关更多信息,请参见 the timezone tag wiki (接近尾声)。

此外,巴西在 2018 年的 11 月 4 日而非 10 月 21 日开始实现夏令时。参见 herehere .此更改反射(reflect)在 IANA TZDB 2018a 中。 , 这反射(reflect)在 TZInfo-Data v1.2018.1 .如果您拥有该版本或更高版本,那么您拥有更新、正确的巴西 DST 日期,从而解释您的结果。

最近有一项计划将巴西的 DST 日期进一步推迟到 11 月 18 日,但政府在该计划成为正式计划之前撤回了该计划,因此时区数据中从未出现过。

关于ruby-on-rails - Rails 在哪里存储夏令时的开始和结束日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52879443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com