当前位置 : 主页 > 编程语言 > ruby >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在使用Rails 5,我的应用程序的时区设置为Brasilia. 现在是巴西的冬天(没有夏令时) Time.current.dst?返回false 但在巴西,夏令时从21/10/2018开始,所以当我这样做时 (Time.current 10.days).dst?我希
我正在使用Rails 5,我的应用程序的时区设置为Brasilia.

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

Time.current.dst?返回false

但在巴西,夏令时从21/10/2018开始,所以当我这样做时

(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 ::时区实例通过Ruby TZInfo gem提供. TZInfo的数据在单独的TZInfo-Data package中提供.保持最新状态将使您的时区数据准确.此数据源自the IANA time zone database (TZDB),与大多数其他编程语言一样.

请注意,通常最好直接使用带有tzinfo gem的IANA时区标识符,因为Rails时区仅限于“134个区域的有意义的子集”(按照相同的文档),但包含许多重复和遗漏,并且不提供关于“有意义”意味着什么的标准.更多关于这一点在the timezone tag wiki(接近结束).

此外,巴西于2018年11月4日开始夏令时,而不是10月21日.请参阅here和here.此更改已反映在IANA TZDB 2018a中,该更改已反映在TZInfo-Data v1.2018.1中.如果您拥有该版本或更新版本,则您拥有更新,正确的巴西DST日期,从而解释您的结果.

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

网友评论