我如何让Ruby解析时间,就好像它在不同的时区一样?
我正在解析这样的事情:
11/23/10 23:29:57
它没有与它关联的时区,但我知道它在UTC时区(而我不是)。 我怎样才能让Ruby把它解析成好像它在UTC时区?
在解析它之前,您可以将UTC时区名称追加到字符串中:
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,则可以使用ActiveSupport::TimeZone
助手
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
它旨在根据用户时区在请求的开始处设置时区。
一切都需要Time.zone
,所以Time.parse
仍然会解析为服务器时区。
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
注意:您上面的时间格式不再有效,所以我更改为支持的格式。
一个没有Time.zone的@Pete Brumm的回答set / unset
Time.zone.parse("Tue Nov 23 23:29:57 2010") + Time.zone.utc_offset
链接地址: http://www.djcxy.com/p/40901.html
上一篇: How do I get Ruby to parse time as if it were in a different time zone?