现在是巴西的冬天(没有夏令时)
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日,但政府在该计划成为正式之前撤回该计划,因此从未在时区数据中出现过.