diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-10-13 21:44:48 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-10-13 21:44:48 +0000 |
commit | c7dd2a1c11c4cf66eac1b6c00ded956b1c3d55f6 (patch) | |
tree | c0b67cf0106dfb07ace77017256d3613a22e5a9b /activesupport/lib | |
parent | 003df72d007725ac19aaf95c406dfb36f38ccd43 (diff) | |
download | rails-c7dd2a1c11c4cf66eac1b6c00ded956b1c3d55f6.tar.gz rails-c7dd2a1c11c4cf66eac1b6c00ded956b1c3d55f6.tar.bz2 rails-c7dd2a1c11c4cf66eac1b6c00ded956b1c3d55f6.zip |
Time and DateTime#advance accept :hours, :minutes, and :seconds options. Closes #9825.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7866 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/core_ext/date_time/calculations.rb | 6 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/time/calculations.rb | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/activesupport/lib/active_support/core_ext/date_time/calculations.rb b/activesupport/lib/active_support/core_ext/date_time/calculations.rb index 4ec75288ca..9cb7455dec 100644 --- a/activesupport/lib/active_support/core_ext/date_time/calculations.rb +++ b/activesupport/lib/active_support/core_ext/date_time/calculations.rb @@ -28,10 +28,12 @@ module ActiveSupport #:nodoc: end # Uses Date to provide precise Time calculations for years, months, and days. The +options+ parameter takes a hash with - # any of these keys: :months, :days, :years. + # any of these keys: :years, :months, :days, :hours, :minutes, :seconds. def advance(options) d = to_date.advance(options) - change(options.merge(:year => d.year, :month => d.month, :day => d.day)) + datetime_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day) + seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600 + seconds_to_advance == 0 ? datetime_advanced_by_date : datetime_advanced_by_date.since(seconds_to_advance) end # Returns a new DateTime representing the time a number of seconds ago diff --git a/activesupport/lib/active_support/core_ext/time/calculations.rb b/activesupport/lib/active_support/core_ext/time/calculations.rb index 04da03110f..94d660afbd 100644 --- a/activesupport/lib/active_support/core_ext/time/calculations.rb +++ b/activesupport/lib/active_support/core_ext/time/calculations.rb @@ -72,10 +72,12 @@ module ActiveSupport #:nodoc: end # Uses Date to provide precise Time calculations for years, months, and days. The +options+ parameter takes a hash with - # any of these keys: :months, :days, :years. + # any of these keys: :years, :months, :days, :hours, :minutes, :seconds. def advance(options) d = to_date.advance(options) - change(options.merge(:year => d.year, :month => d.month, :day => d.day)) + time_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day) + seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600 + seconds_to_advance == 0 ? time_advanced_by_date : time_advanced_by_date.since(seconds_to_advance) end # Returns a new Time representing the time a number of seconds ago, this is basically a wrapper around the Numeric extension |