我有一个字符串,其中包含带有时区的ISO8601格式的日期和时间。如何在字符串中指定的时区中获取Time
或TimeWithTimezone
对象?
PC的时区是' +01:00'并且ActiveSupport::TimeWithZone
设置为UTC。这是我到目前为止所尝试的内容:
Loading development environment (Rails 3.2.13)
irb(main):001:0> Time.parse '1990-01-23T00:11:22-07:00'
=> 1990-01-23 08:11:22 +0100
irb(main):002:0> Time.zone.parse '1990-01-23T00:11:22-07:00'
=> Tue, 23 Jan 1990 07:11:22 UTC +00:00
这就是我想要的:
irb(main):001:0> Time.???? '1990-01-23T00:11:22-07:00'
=> 1990-01-23 00:11:22 -0700
如何解析字符串并在字符串中指定的时区中获取时间对象?
答案 0 :(得分:2)
您的问题是您已使用Time
,而必须使用DateTime
:
DateTime.strptime('1990-01-23T00:11:22-07:00', "%Y-%m-%dT%H:%M:%S%z")
#=> Tue, 23 Jan 1990 00:11:22 -0700
要使它成为Time
类对象,你可以做类似这样的事情(有点难看,但它仍能完成它的工作):
date = DateTime.strptime('1990-01-23T00:11:22-07:00', "%Y-%m-%dT%H:%M:%S%z")
#=> Tue, 23 Jan 1990 00:11:22 -0700
Time.new(date.year, date.month, date.day, date.hour, date.min, date.sec, date.zone)
#=> 1990-01-23 00:11:22 -0700