在开发一个Ruby on Rails应用程序以在巴巴多斯岛工作时,我偶然发现了一个时区问题。
The timezone in Barbados, officially, is AST (Atlantic Standard Time),即UTC4。在config.time中将时区设置为AST的字符串是“大西洋时间(加拿大)”。
然而,AST的一些国家昨天进入了夏令时,但不是巴巴多斯岛,它使存储在数据库中的记录显示为"ADT“(大西洋白天),而不是UTC-3中的AST。是否有其他时区显示不正常?
发布于 2017-03-13 20:55:18
简短的回答:你能用America/Barbados的时区代替吗?
更长的答案
ActiveSupport::TimeZone是TZInfo::Timezone的包装器,因此您可能希望深入研究the source以了解到底发生了什么。
在这里找出时区有点令人困惑--它看起来像是将Barbados的时区列出为Eastern Caribbean on wikipedia,但这会重定向到AST,并注意到没有遵守DST。但在Rails中将其设置为AST将默认观察DST。
但是如果你通过TZInfo的supported timezones,你可以看到确实有针对巴巴多斯岛和other countries的时区,它们共享东加勒比海的时间。
应该行得通..。如果不是,那么值得在TZInfo错误跟踪器上提高。
https://stackoverflow.com/questions/42762471
复制相似问题