jpw*_*ynn 27 timezone ruby-on-rails
一个方法如何获取当前的Time.zone并将其放入可用的格式ActiveSupport::TimeZone[some_zone].parse()?
Time.zone.to_s返回一个不能用的字符串似乎很奇怪 ActiveSupport::TimeZone[zone].parse()
Time.zone.to_s 回报 "(GMT-08:00) Pacific Time (US & Canada)"
不过ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]是nil.
ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]
=> nil
ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
=> (GMT-08:00) Pacific Time (US & Canada)
Run Code Online (Sandbox Code Playgroud)
dee*_*our 47
使用Time.zone.name,而不是Time.zone.to_s
[1] pry(main)> Time.zone.to_s
=> "(GMT-05:00) Eastern Time (US & Canada)"
[2] pry(main)> Time.zone.name
=> "Eastern Time (US & Canada)"
[3] pry(main)> ActiveSupport::TimeZone[Time.zone.name]
=> (GMT-05:00) Eastern Time (US & Canada)
Run Code Online (Sandbox Code Playgroud)
至于我如何得到这个(按要求),我只知道该name方法存在Time.zone.如果我不清楚这一点,我会查看文档.如果它不在你那里(并且在这里),我通常用Pry检查类/模块/对象.Pry是irb的替代品,可以让我做类似的事情
[1] pry(main)> cd Time.zone
[2] pry(#<ActiveSupport::TimeZone>):1> ls -m
Comparable#methods: < <= == > >= between?
ActiveSupport::TimeZone#methods: <=> =~ at formatted_offset local local_to_utc name now parse period_for_local period_for_utc to_s today tzinfo utc_offset utc_to_local
self.methods: __pry__
[3] pry(#<ActiveSupport::TimeZone>):1> name
=> "Eastern Time (US & Canada)"
Run Code Online (Sandbox Code Playgroud)
ls -m在线[2]上方打印对象上的方法(如果你向右滚动,你会看到name在那里列出).你可以看到[3]我可以name直接调用Time.zone我在里面的对象并获得你正在寻找的输出.