mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Time #yesterday and #tomorrow behave correctly crossing DST boundary. Closes #7399 [sblackstone]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9221 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
cfe42ba1b1
commit
49f2e6f8d4
3 changed files with 56 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Time #yesterday and #tomorrow behave correctly crossing DST boundary. Closes #7399 [sblackstone]
|
||||
|
||||
* TimeWithZone: Adding tests for dst and leap day edge cases when advancing time [Geoff Buesing]
|
||||
|
||||
* TimeWithZone#method_missing: send to utc to advance with dst correctness, otherwise send to time. Adding tests for time calculations methods [Geoff Buesing]
|
||||
|
|
|
@ -221,12 +221,12 @@ module ActiveSupport #:nodoc:
|
|||
|
||||
# Convenience method which returns a new Time representing the time 1 day ago
|
||||
def yesterday
|
||||
self.ago(1.day)
|
||||
advance(:days => -1)
|
||||
end
|
||||
|
||||
# Convenience method which returns a new Time representing the time 1 day since the instance time
|
||||
def tomorrow
|
||||
self.since(1.day)
|
||||
advance(:days => 1)
|
||||
end
|
||||
|
||||
def plus_with_duration(other) #:nodoc:
|
||||
|
|
|
@ -227,6 +227,32 @@ class TimeExtCalculationsTest < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_daylight_savings_time_crossings_forward_start_tomorrow
|
||||
with_env_tz 'US/Eastern' do
|
||||
# st: US: 2005 April 2nd 7:27pm
|
||||
assert_equal Time.local(2005,4,3,19,27,0), Time.local(2005,4,2,19,27,0).tomorrow, 'st+1.day=>dt'
|
||||
assert_equal Time.local(2005,4,4,19,27,0), Time.local(2005,4,3,19,27,0).tomorrow, 'dt+1.day=>dt'
|
||||
end
|
||||
with_env_tz 'NZ' do
|
||||
# st: New Zealand: 2006 September 30th 7:27pm
|
||||
assert_equal Time.local(2006,10,1,19,27,0), Time.local(2006,9,30,19,27,0).tomorrow, 'st+1.day=>dt'
|
||||
assert_equal Time.local(2006,10,2,19,27,0), Time.local(2006,10,1,19,27,0).tomorrow, 'dt+1.day=>dt'
|
||||
end
|
||||
end
|
||||
|
||||
def test_daylight_savings_time_crossings_forward_start_yesterday
|
||||
with_env_tz 'US/Eastern' do
|
||||
# st: US: 2005 April 2nd 7:27pm
|
||||
assert_equal Time.local(2005,4,2,19,27,0), Time.local(2005,4,3,19,27,0).yesterday, 'dt-1.day=>st'
|
||||
assert_equal Time.local(2005,4,3,19,27,0), Time.local(2005,4,4,19,27,0).yesterday, 'dt-1.day=>dt'
|
||||
end
|
||||
with_env_tz 'NZ' do
|
||||
# st: New Zealand: 2006 September 30th 7:27pm
|
||||
assert_equal Time.local(2006,9,30,19,27,0), Time.local(2006,10,1,19,27,0).yesterday, 'dt-1.day=>st'
|
||||
assert_equal Time.local(2006,10,1,19,27,0), Time.local(2006,10,2,19,27,0).yesterday, 'dt-1.day=>dt'
|
||||
end
|
||||
end
|
||||
|
||||
def test_daylight_savings_time_crossings_forward_end
|
||||
with_env_tz 'US/Eastern' do
|
||||
# dt: US: 2005 October 30th 12:45am
|
||||
|
@ -240,6 +266,32 @@ class TimeExtCalculationsTest < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_daylight_savings_time_crossings_forward_end_tomorrow
|
||||
with_env_tz 'US/Eastern' do
|
||||
# dt: US: 2005 October 30th 12:45am
|
||||
assert_equal Time.local(2005,10,31,0,45,0), Time.local(2005,10,30,0,45,0).tomorrow, 'dt+1.day=>st'
|
||||
assert_equal Time.local(2005,11, 1,0,45,0), Time.local(2005,10,31,0,45,0).tomorrow, 'st+1.day=>st'
|
||||
end
|
||||
with_env_tz 'NZ' do
|
||||
# dt: New Zealand: 2006 March 19th 1:45am
|
||||
assert_equal Time.local(2006,3,20,1,45,0), Time.local(2006,3,19,1,45,0).tomorrow, 'dt+1.day=>st'
|
||||
assert_equal Time.local(2006,3,21,1,45,0), Time.local(2006,3,20,1,45,0).tomorrow, 'st+1.day=>st'
|
||||
end
|
||||
end
|
||||
|
||||
def test_daylight_savings_time_crossings_forward_end_yesterday
|
||||
with_env_tz 'US/Eastern' do
|
||||
# dt: US: 2005 October 30th 12:45am
|
||||
assert_equal Time.local(2005,10,30,0,45,0), Time.local(2005,10,31,0,45,0).yesterday, 'st-1.day=>dt'
|
||||
assert_equal Time.local(2005,10, 31,0,45,0), Time.local(2005,11,1,0,45,0).yesterday, 'st-1.day=>st'
|
||||
end
|
||||
with_env_tz 'NZ' do
|
||||
# dt: New Zealand: 2006 March 19th 1:45am
|
||||
assert_equal Time.local(2006,3,19,1,45,0), Time.local(2006,3,20,1,45,0).yesterday, 'st-1.day=>dt'
|
||||
assert_equal Time.local(2006,3,20,1,45,0), Time.local(2006,3,21,1,45,0).yesterday, 'st-1.day=>st'
|
||||
end
|
||||
end
|
||||
|
||||
def test_yesterday
|
||||
assert_equal Time.local(2005,2,21,10,10,10), Time.local(2005,2,22,10,10,10).yesterday
|
||||
assert_equal Time.local(2005,2,28,10,10,10), Time.local(2005,3,2,10,10,10).yesterday.yesterday
|
||||
|
|
Loading…
Reference in a new issue