Rails 3: How to get today's date in specific timezone?
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'
?
Solution 1:
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
Solution 2:
You should be able to do this: Time.current
. That would display the current time in Melbourne if that's what Time.zone
is set to.
Solution 3:
Date.current
Date.current
is probably the most clear and succinct way, and was added in Rails 3.
$ Date.current
#=> Sat, 14 Jul 2018
http://apidock.com/rails/v3.2.13/Date/current/class