Ruby on rails rails 3:如何从散列创建时间,比如time.local,除非将散列解释为位于不同的时区?

Ruby on rails rails 3:如何从散列创建时间,比如time.local,除非将散列解释为位于不同的时区?,ruby-on-rails,datetime,Ruby On Rails,Datetime,给定一个包含时间和日期的哈希,当哈希是其他时区时,如何创建UTC时间对象 例如,我的用户是EST,并指定“15:04 8/25/2012”(通过视图中的select_datetime),因此时间隐式为EST 当他们提交表格时,时间\u散列={“日”=>“25”,“月”=>“8”,“年”=>“2012”,“小时”=>“15”,“分钟”=>“04”} 如果我设定 the_time = Time.local params[:date][:year], params[:date][:month], pa

给定一个包含时间和日期的哈希,当哈希是其他时区时,如何创建UTC时间对象

例如,我的用户是EST,并指定“15:04 8/25/2012”(通过视图中的select_datetime),因此时间隐式为EST

当他们提交表格时,时间\u散列={“日”=>“25”,“月”=>“8”,“年”=>“2012”,“小时”=>“15”,“分钟”=>“04”}

如果我设定

the_time = Time.local params[:date][:year], params[:date][:month], params[:date][:day], params[:date][:hour], params[:date][:minute]
它创建了一个时间对象,时间为2012年8月25日15:04,但在服务器的本地时间(太平洋时间),而不是用户的本地时间(东部时间)


注意:我之前在同一个方法中将Time.zone设置为Eastern,所以我认为Time.local会将哈希解释为Eastern Time,但它没有。我还尝试了Time.zone.local,但这会引发错误。

一个技巧似乎是:使用Time.zone.parse,这也意味着手动将哈希转换为“YYYY-MM-DD HH:MM:00”格式


应该行得通。它比
Time.local
稍微挑选一点,只接受整数作为参数,而
Time.local
不介意字符串。在那里向i发送一些调用,你应该会没事。

宾果-谢谢-我尝试Time.zone.local时遇到的错误是因为需要整数,哈希是字符串。奇怪的是,Time.local接受字符串,而Time.zone.local不接受字符串,但感谢您指出这一点!
the_time = Time.zone.parse("#{params[:date][:year]}-#{params[:date][:month]}-#{params[:date][:day]} #{params[:date][:hour]}:#{params[:date][:minute]}:00")
Time.zone.local