有一个功能需要获得服务器的时区,然后转换时间。
寻找了半天,发现可以用date +%Z
获得类似CST
这种缩略的方式,但是没有办法转变成全名,
这样就不能用 Rails 的ActiveSupport::TimeZone
功能了。
找到一个库:TimezoneParser,可以用这种方式找到:
TimezoneParser::Abbreviation.new(`date +%Z`.strip).getTimezones[0]
看来是一个缩略词对应无数个地方的时区名称。
最后找到了解决方案,下面实现把罗马的时间转换成服务器时间:
ActiveSupport::TimeZone.new('Rome').parse('9 am').localtime
真的好麻烦呀。