提交 389616e6 编写于 作者: J Jeremy Kemper

Fix Time#years_ago and #years_since from leap days. Closes #9865.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7867 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 c7dd2a1c
*SVN*
* Fix Time#years_ago and #years_since from leap days. #9865 [Geoff Buesing]
* Time and DateTime#advance accept :hours, :minutes, and :seconds options. #9825 [Geoff Buesing]
* Fix Date#years_ago and #years_since from leap days. #9864 [Geoff Buesing]
......
......@@ -110,12 +110,12 @@ def months_since(months)
# Returns a new Time representing the time a number of specified years ago
def years_ago(years)
change(:year => self.year - years)
advance(:years => -years)
end
# Returns a new Time representing the time a number of specified years in the future
def years_since(years)
change(:year => self.year + years)
advance(:years => years)
end
# Short-hand for years_ago(1)
......
......@@ -119,11 +119,13 @@ def test_months_since
def test_years_ago
assert_equal Time.local(2004,6,5,10), Time.local(2005,6,5,10,0,0).years_ago(1)
assert_equal Time.local(1998,6,5,10), Time.local(2005,6,5,10,0,0).years_ago(7)
assert_equal Time.local(2003,2,28,10), Time.local(2004,2,29,10,0,0).years_ago(1) # 1 year ago from leap day
end
def test_years_since
assert_equal Time.local(2006,6,5,10), Time.local(2005,6,5,10,0,0).years_since(1)
assert_equal Time.local(2012,6,5,10), Time.local(2005,6,5,10,0,0).years_since(7)
assert_equal Time.local(2005,2,28,10), Time.local(2004,2,29,10,0,0).years_since(1) # 1 year since leap day
# Failure because of size limitations of numeric?
# assert_equal Time.local(2182,6,5,10), Time.local(2005,6,5,10,0,0).years_since(177)
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册