I have users entering in dates in a Ruby on Rails website. I parse the dates into a DateTime object with something like:
date = DateTime.new(params[:year].to_i, params[:month].to_i, params[:day].to_i, params[:hour].to_i, params[:minute].to_i)
or
date = DateTime.parse(params[:date])
Both DateTime
s will not be in the time zone of the user which I previously set with something like:
Time.zone = "Pacific Time (US & Canada)"
How do I parse the above DateTime
s to be in the right time zone? I know the DateTime.new
method has a 7th argument for the time offset. Is there an easy way to look up the offset for a time zone in a given time? Or should I be using something other than DateTime
?
You can use Time.zone.local
if you set Time.zone
previously:
user_time = Time.zone.local(params[:year].to_i, params[:month].to_i, params[:day].to_i, params[:hour].to_i, params[:minute].to_i, 0)
Have a look at the ActiveSupport::TimeWithZone
documentation.