instance method
advance
Ruby on Rails 7.1.6
Since v3.0.20Signature
advance(options)
Provides precise Date calculations for years, months, and days. The options parameter takes a hash with any of these keys: :years, :months, :weeks, :days.
The increments are applied in order of time units from largest to smallest. In other words, the date is incremented first by :years, then by :months, then by :weeks, then by :days. This order can affect the result around the end of a month. For example, incrementing first by months then by days:
Date.new(2004, 9, 30).advance(months: 1, days: 1) # => Sun, 31 Oct 2004
Whereas incrementing first by days then by months yields a different result:
Date.new(2004, 9, 30).advance(days: 1).advance(months: 1) # => Mon, 01 Nov 2004
Parameters
-
optionsreq
Source
# File activesupport/lib/active_support/core_ext/date/calculations.rb, line 127
def advance(options)
d = self
d = d >> options[:years] * 12 if options[:years]
d = d >> options[:months] if options[:months]
d = d + options[:weeks] * 7 if options[:weeks]
d = d + options[:days] if options[:days]
d
end
Defined in activesupport/lib/active_support/core_ext/date/calculations.rb line 127
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in Date