Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 在Rails中将日期转换为用户时区_Ruby_Ruby On Rails 3_Timezone - Fatal编程技术网

Ruby 在Rails中将日期转换为用户时区

Ruby 在Rails中将日期转换为用户时区,ruby,ruby-on-rails-3,timezone,Ruby,Ruby On Rails 3,Timezone,我在将日期转换为UTC然后再转换回用户时区时遇到一些问题 因为我已经有很多用户了,所以我使用时区gem获取他们的时区,结果是:“太平洋时间(美国和加拿大)” 当我向他们询问特定的日期/时间,并希望将时区添加到其中(“太平洋时间(美国和加拿大)”,然后以UTC格式将其保存在DB中时,就会出现问题 我使用jQueryUIDatePicker获取日期,并以这种格式获取:“2013年10月13日,星期日”和时间以这种格式获取“上午12:00” 在此之后,我使用DateTime.strTime(“用户输入

我在将日期转换为UTC然后再转换回用户时区时遇到一些问题

因为我已经有很多用户了,所以我使用时区gem获取他们的时区,结果是:“太平洋时间(美国和加拿大)”

当我向他们询问特定的日期/时间,并希望将时区添加到其中(“太平洋时间(美国和加拿大)”,然后以UTC格式将其保存在DB中时,就会出现问题

我使用jQueryUIDatePicker获取日期,并以这种格式获取:“2013年10月13日,星期日”和时间以这种格式获取“上午12:00”

在此之后,我使用DateTime.strTime(“用户输入”,%A,%b%e,%Y%I:%M%p”)将其转换为DateTime


我的问题是如何将数据库中存储的用户时区设置为该日期的字符串“太平洋时间(美国和加拿大)”?

您应该能够格式化时区并将其添加到用户输入字符串中,然后按如下所示对其进行解析:

user_input += ActiveSupport::TimeZone.new("Pacific Time (US & Canada)").formatted_offset
DateTime.strptime(user_input, "%A, %b %e, %Y %I:%M %P%:z")

我对此进行了测试,但在时区中更改了时间:
DateTime.parse('2013年10月13日星期日01:00 pm','%A,%b%e,%Y%I:%M%P')。在时区(“太平洋时间(美国和加拿大)”)=>Sun,2013年10月13日06:00 PDT-07:00
我希望保持与上述示例中相同的时间(01:00 pm)。@AlexPanait请参阅我编辑的帖子,希望这对你更有效