Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 输入时区中的Ruby/Rails Time.parse_Ruby On Rails_Ruby_Timezone - Fatal编程技术网

Ruby on rails 输入时区中的Ruby/Rails Time.parse

Ruby on rails 输入时区中的Ruby/Rails Time.parse,ruby-on-rails,ruby,timezone,Ruby On Rails,Ruby,Timezone,我有一个字符串,其中包含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' => 1

我有一个字符串,其中包含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

如何解析字符串并在字符串中指定的时区中获取time对象?

您的问题是您使用了
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 
编辑 要使其成为
时间
类对象,您可以执行以下操作(虽然有点难看,但它仍能完成其工作):


你看了吗?@AndreyDeineko是的,找不到任何有用的东西。没有办法用时间类来做吗?@xx77aBs编辑了答案,这样你就获得了时间类对象
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