mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added Date#change (like Time#change) [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6910 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1edd21bb02
commit
ff5c7c8c40
4 changed files with 22 additions and 1 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Added Date#change (like Time#change) [DHH]
|
||||
|
||||
* DateTime#to_time converts to Time unless out of range. #8512 [Geoff Buesing]
|
||||
|
||||
* Date#to_datetime, #to_s(:rfc822). #8512 [Geoff Buesing]
|
||||
|
|
|
@ -38,6 +38,20 @@ module ActiveSupport #:nodoc:
|
|||
d = d + options.delete(:days) if options[:days]
|
||||
d
|
||||
end
|
||||
|
||||
# Returns a new Date where one or more of the elements have been changed according to the +options+ parameter.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# Date.new(2007, 5, 12).change(:day => 1) # => Date.new(2007, 5, 12)
|
||||
# Date.new(2007, 5, 12).change(:year => 2005, :month => 1) # => Date.new(2005, 1, 12)
|
||||
def change(options)
|
||||
::Date.new(
|
||||
options[:year] || self.year,
|
||||
options[:month] || self.month,
|
||||
options[:day] || options[:mday] || self.day # mday is deprecated
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -61,7 +61,7 @@ module ActiveSupport #:nodoc:
|
|||
self.utc? ? :utc_time : :local_time,
|
||||
options[:year] || self.year,
|
||||
options[:month] || self.month,
|
||||
options[:mday] || self.mday,
|
||||
options[:day] || options[:mday] || self.day, # mday is deprecated
|
||||
options[:hour] || self.hour,
|
||||
options[:min] || (options[:hour] ? 0 : self.min),
|
||||
options[:sec] || ((options[:hour] || options[:min]) ? 0 : self.sec),
|
||||
|
|
|
@ -21,4 +21,9 @@ class DateExtCalculationsTest < Test::Unit::TestCase
|
|||
def test_to_date
|
||||
assert_equal Date.new(2005, 2, 21), Date.new(2005, 2, 21).to_date
|
||||
end
|
||||
|
||||
def test_change
|
||||
assert_equal Date.new(2005, 2, 21), Date.new(2005, 2, 11).change(:day => 21)
|
||||
assert_equal Date.new(2007, 5, 11), Date.new(2005, 2, 11).change(:year => 2007, :month => 5)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue