我如何让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?

下一篇: What is the best way to implement constants in Java?