ruby-on-rails – Rails在哪里存储夏令时的开始和结束日期?
我正在使用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:
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日,但政府在该计划成为正式之前撤回该计划,因此从未在时区数据中出现过. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |