In ruby parse a time in an arbitrary gmt offset
我在Rails 3.2中运行,我无法想出一个很好的方法来解析在任意时区给我的时间。
作为一个例子,这是我在单独的键中给出的格式
1 2 3 4 5 6 | { "start_date"=>"2013-04-24 13:00:00", "timezone"=>"America/Los_Angeles", "timezone_offset"=>"GMT-0700", ... } |
这个问题非常接近于回答:
1 | time = ActiveSupport::TimeZone.new('UTC').parse('2010-02-05 01:00:01') |
问题是,当我将"America / Los_Angeles"作为
如果我知道gmt偏移量而不是使用时区名称,有没有办法获得时区?
您可以在
如api.rubyonrails.org所示:
Locate a specific time zone object. If the argument is a
string, it is interpreted to mean the name of the timezone to locate.
If it is a numeric value it is either the hour offset, or the second
offset, of the timezone to find. (The first one with that offset will
be returned.) Returns nil if no such time zone is known to the system.
代码示例:
1 2 3 4 | ActiveSupport::TimeZone["America/Los_Angeles"] => (GMT-08:00) America/Los_Angeles ActiveSupport::TimeZone[-8] => (GMT-08:00) America/Los_Angeles |
那么,你要做的是:
1 | time = ActiveSupport::TimeZone[-7].parse('2013-04-24 13:00:00') |
但是,请注意,因为偏移量可能相当于一个以上的时区,因为许多时区可能位于相同的偏移量上。