Ruby Ruby 获得服务器时区信息好麻烦

linjunhalida · 2014年11月18日 · 最后由 steven_yue 回复于 2014年11月19日 · 1775 次阅读

有一个功能需要获得服务器的时区,然后转换时间。

寻找了半天,发现可以用date +%Z获得类似CST这种缩略的方式,但是没有办法转变成全名, 这样就不能用 Rails 的ActiveSupport::TimeZone功能了。

找到一个库:TimezoneParser,可以用这种方式找到:

TimezoneParser::Abbreviation.new(`date +%Z`.strip).getTimezones[0]

看来是一个缩略词对应无数个地方的时区名称。

最后找到了解决方案,下面实现把罗马的时间转换成服务器时间:

ActiveSupport::TimeZone.new('Rome').parse('9 am').localtime

真的好麻烦呀。

Time.now.getlocal.zone 这个呢?

[1] pry(main)> Time.now.getlocal.zone
=> "CST"

不行。。。需要获得时区名字。。。

直接做成配置更方便。。。

为什么需要时区名称?你只要知道不同时区的 offset hour 就可以自由转换了啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号