Rails 3: How to get today's date in specific timezone?

Misha Moroshko picture Misha Moroshko · May 19, 2011 · Viewed 59.5k times · Source

To get today's date I do:

Date.today    # => Fri, 20 May 2011

I would like to get today's date in a specific timezone, say 'Melbourne'.

I have the following setting in my application.rb:

config.time_zone = 'Melbourne'

and I set:

Time.zone = 'Melbourne'

in my application controller before each action.

However, it doesn't help (I guess because these settings affects only dates that are stored in the database).

How could I get today's date in 'Melbourne' ?

Answer

Dylan Markow picture Dylan Markow · May 19, 2011

Date objects don't necessarily have timezones, but Time objects do. You can try it as a Time, then convert back to a Date:

Time.now.to_date
# => Thu, 19 May 2011 
Time.now.in_time_zone('Melbourne').to_date
# => Fri, 20 May 2011