Add support for localized date references
Ruby's Date class automatically gives us #yesterday, #today, and #tomorrow. And ActiveSupport has a handy Time.zone.today for getting a localized version. But there was no localized version of #yesterday or #tomorrow. Until now.
This commit is contained in:
parent
59cb9e31fd
commit
029f24ede9
@ -1,3 +1,10 @@
|
||||
* Add `Time.zone.yesterday` and `Time.zone.tomorrow`. These follow the
|
||||
behavior of Ruby's `Date.yesterday` and `Date.tomorrow` but return localized
|
||||
versions, similar to how `Time.zone.today` has returned a localized version
|
||||
of `Date.today`.
|
||||
|
||||
*Colin Bartlett*
|
||||
|
||||
* Show valid keys when `assert_valid_keys` raises an exception, and show the
|
||||
wrong value as it was entered.
|
||||
|
||||
|
@ -317,6 +317,16 @@ def today
|
||||
tzinfo.now.to_date
|
||||
end
|
||||
|
||||
# Returns the next date in this time zone.
|
||||
def tomorrow
|
||||
today + 1
|
||||
end
|
||||
|
||||
# Returns the previous date in this time zone.
|
||||
def yesterday
|
||||
today - 1
|
||||
end
|
||||
|
||||
# Adjust the given time to the simultaneous time in the time zone
|
||||
# represented by +self+. Returns a Time.utc() instance -- if you want an
|
||||
# ActiveSupport::TimeWithZone instance, use Time#in_time_zone() instead.
|
||||
|
@ -99,6 +99,28 @@ def test_today
|
||||
assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].today
|
||||
end
|
||||
|
||||
def test_tomorrow
|
||||
travel_to(Time.utc(2000, 1, 1, 4, 59, 59)) # 1 sec before midnight Jan 1 EST
|
||||
assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].tomorrow
|
||||
travel_to(Time.utc(2000, 1, 1, 5)) # midnight Jan 1 EST
|
||||
assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].tomorrow
|
||||
travel_to(Time.utc(2000, 1, 2, 4, 59, 59)) # 1 sec before midnight Jan 2 EST
|
||||
assert_equal Date.new(2000, 1, 2), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].tomorrow
|
||||
travel_to(Time.utc(2000, 1, 2, 5)) # midnight Jan 2 EST
|
||||
assert_equal Date.new(2000, 1, 3), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].tomorrow
|
||||
end
|
||||
|
||||
def test_yesterday
|
||||
travel_to(Time.utc(2000, 1, 1, 4, 59, 59)) # 1 sec before midnight Jan 1 EST
|
||||
assert_equal Date.new(1999, 12, 30), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].yesterday
|
||||
travel_to(Time.utc(2000, 1, 1, 5)) # midnight Jan 1 EST
|
||||
assert_equal Date.new(1999, 12, 31), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].yesterday
|
||||
travel_to(Time.utc(2000, 1, 2, 4, 59, 59)) # 1 sec before midnight Jan 2 EST
|
||||
assert_equal Date.new(1999, 12, 31), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].yesterday
|
||||
travel_to(Time.utc(2000, 1, 2, 5)) # midnight Jan 2 EST
|
||||
assert_equal Date.new(2000, 1, 1), ActiveSupport::TimeZone['Eastern Time (US & Canada)'].yesterday
|
||||
end
|
||||
|
||||
def test_local
|
||||
time = ActiveSupport::TimeZone["Hawaii"].local(2007, 2, 5, 15, 30, 45)
|
||||
assert_equal Time.utc(2007, 2, 5, 15, 30, 45), time.time
|
||||
|
Loading…
Reference in New Issue
Block a user