我有一个用户在Ruby on Rails网站上输入日期.我将日期解析为一个DateTime对象,其中包含:
date = DateTime.new(params[:year].to_i,params[:month].to_i,params[:day].to_i,params[:hour].to_i,params[:minute].to_i)
要么
date = DateTime.parse(params[:date])
两个DateTimes都不会在我以前设置的用户的时区中:
Time.zone = "Pacific Time (US & Canada)"
如何将上述DateTimes解析为正确的时区?我知道DateTime.new方法有时间偏移的第七个参数.在给定的时间内有一个简单的方法来查找时区的偏移量吗?还是应该使用除DateTime之外的东西?
解决方法
如果您以前设置了Time.zone,可以使用Time.zone.local:
user_time = Time.zone.local(params[:year].to_i,params[:minute].to_i,0)