我有一个旧的数据库,其时区格式如下:
US/Eastern
Australia/Melbourne
在我的新Rails应用程序中,我将它们保存为:
Eastern Time (US & Canada)
Melbourne
如何将旧版本转换为新版本?我一直在忙着使用ActiveSupport :: TimeZone,但无法弄清楚从一个到另一个的正确组合。
我希望我可以创建一个新对象,然后返回新格式化的名称,但它只返回我给它的名称。例如:
> tz = ActiveSupport::TimeZone.new("US/Eastern")
=> (GMT-05:00) US/Eastern
> tz.name
=> "US/Eastern"
提前致谢!
答案 0 :(得分:4)
这非常难看,但这是我发现的唯一方法:
city = TZInfo::Timezone.get('US/Eastern').instance_eval('@linked_timezone').name
ActiveSupport::TimeZone::MAPPING.invert[city]
修改强>
要使此代码与城市或区域一起使用,您可以执行以下操作:
zone = TZInfo::Timezone.get(zone_name)
city = (zone.instance_eval('@linked_timezone') || zone).name
ActiveSupport::TimeZone::MAPPING.invert[city]