ruby-on-rails – 如何从过时的TZInfo标识符中获取Rails TimeZon
已经有一个问题可以解答如何将“America / Los_Angeles”转换为“Pacific Time(US& Canada)”.但是我想将“US / Pacific”和其他过时的时区转换为Rails TimeZone.我无法在图书馆找到任何可以帮助我完成此任务的内容.
解决方法
从Rails
ActiveSupport::TimeZone docs:
就个人而言,我认为Rails时区很傻.它们被任意限制为Rails所描述的“146个区域的有意义的子集”.但他们没有解释他们如何确定哪些区域“有意义”哪些区域被丢弃. 诸如“US / Pacific”之类的标识符在TZDB数据中称为“链接”或“别名”.我可以看到,也许它们可能会从Rails中省略,但还有许多其他现实世界的时区完全缺失. 我在现实世界中唯一见过Rails时区标识符的地方是Twitter API.另一方面,IANA / TZDB标识符无处不在. 我能提供的最好建议是忘记Rails时区,直接使用Ruby TZInfo Gem.它具有包含所有区域的完整TZDB实现,包括别名. 如果您确实必须继续使用Rails区域,则可以先使用TZInfo解析实际区域的别名,然后查看该区域是否在Rails MAPPING字典中.例如: "US/Pacific" => "America/Los_Angeles" (via TZInfo) "America/Los_Angeles" => "Pacific Time (US & Canada)" (via Rails MAPPING) 我相信当您通过TZInfo加载“US / Pacific”时,它将被子类化为 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |