Convert UTC to local time in Rails 3 Convert UTC to local time in Rails 3 ruby ruby

Convert UTC to local time in Rails 3


Time#localtime will give you the time in the current time zone of the machine running the code:

> moment = Time.now.utc  => 2011-03-14 15:15:58 UTC > moment.localtime  => 2011-03-14 08:15:58 -0700 

Update: If you want to conver to specific time zones rather than your own timezone, you're on the right track. However, instead of worrying about EST vs EDT, just pass in the general Eastern Time zone -- it will know based on the day whether it is EDT or EST:

> Time.now.utc.in_time_zone("Eastern Time (US & Canada)")  => Mon, 14 Mar 2011 11:21:05 EDT -04:00 > (Time.now.utc + 10.months).in_time_zone("Eastern Time (US & Canada)")  => Sat, 14 Jan 2012 10:21:18 EST -05:00 


Rails has its own names. See them with:

rake time:zones:us

You can also run rake time:zones:all for all time zones.To see more zone-related rake tasks: rake -D time

So, to convert to EST, catering for DST automatically:

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


It is easy to configure it using your system local zone,Just in your application.rb add this

config.time_zone = Time.now.zone

Then, rails should show you timestamps in your localtime or you can use something like this instruction to get the localtime

Post.created_at.localtime