我正在解析类似这样的东西:
11/23/10 23:29:57它没有与之关联的时区,但我知道它在UTC时区(而我不在)。我怎样才能让Ruby像在UTC时区一样解析它?
发布于 2010-11-24 09:08:09
您可以在解析字符串之前将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发布于 2013-07-25 23:25:26
如果您使用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
注意:您上面使用的时间格式不再有效,因此我将其更改为受支持的格式。
发布于 2019-09-13 10:45:18
来自https://rubyinrails.com/2018/05/30/rails-parse-date-time-string-in-utc-zone/的功劳
Time.find_zone("UTC").parse(datetime)
# => Wed, 30 May 2018 18:00:00 UTC +05:30https://stackoverflow.com/questions/4262550
复制相似问题