给定一个包含时间和日期的哈希,当哈希是某个其他时区时,如何创建一个 UTC 时间对象?
例如,我的用户是 EST 并指定“15:04 8/25/2012”(通过视图中的 select_datetime),因此时间隐含 EST。
当他们提交表单时,time_hash = {"day"=>"25", "month"=>"8", "year"=>"2012", "hour"=>"15", "minute"=> “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 设置为东部时间,所以我认为 Time.local 会将哈希解释为东部时间,但事实并非如此。我也试过 Time.zone.local 但这会引发错误。