How do I get Ruby to parse time as if it were in a different time zone?
我正在分析如下内容:
1 | 11/23/10 23:29:57 |
它没有与之相关的时区,但我知道它在UTC时区(而我没有)。我怎样才能让Ruby像在UTC时区一样分析它呢?
在分析字符串之前,您可以将UTC时区名称附加到该字符串中:
1 2 3 4 5 | require 'time' s ="11/23/10 23:29:57" Time.parse(s) # => Tue Nov 23 23:29:57 -0800 2010 s +=" UTC" Time.parse(s) # => Tue Nov 23 23:29:57 UTC 2010 |
如果您使用的是Rails,则可以使用
1 2 3 4 | current_timezone = Time.zone Time.zone ="UTC" Time.zone.parse("Tue Nov 23 23:29:57 2010") # => Tue, 23 Nov 2010 23:29:57 UTC +00:00 Time.zone = current_timezone |
它被设计为在请求开始时根据用户时区设置时区。
每件事情都需要有
http://api.rubyonrails.org/classes/activesupport/timezone.html
注意:上面的时间格式不再有效,所以我改为支持的格式。
如果您使用的是ActiveSupport[来自Rails,例如],则可以执行以下操作:
1 | ActiveSupport::TimeZone["GMT"].parse("..... date string") |
在没有设置/取消设置时区的情况下对@pete brumm的答案进行校准。
1 | Time.zone.parse("Tue Nov 23 23:29:57 2010") + Time.zone.utc_offset |