How to create a Ruby DateTime from existing Time.zone for Rails?

at. picture at. · Apr 6, 2013 · Viewed 49.7k times · Source

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 DateTimes 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 DateTimes 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?

Answer

shweta picture shweta · Nov 8, 2013

Try:

Time.zone = "Pacific Time (US & Canada)"
Time.zone.parse('8-11-2013 23:59:59') #=> Fri, 08 Nov 2013 23:59:59 PST -08:00 

OR

Time.now.in_time_zone("Pacific Time (US & Canada)")

OR

DateTime.now.in_time_zone("Pacific Time (US & Canada)")