class ActiveSupport::Duration
Provides accurate date and time measurements using Date#advance and Time#advance, respectively. It mainly supports the methods on Numeric.
1.month.ago # equivalent to Time.now.advance(months: -1)
Attributes
Public Instance Methods
# File activesupport/lib/active_support/duration.rb, line 18 def +(other) if Duration === other Duration.new(value + other.value, @parts + other.parts) else Duration.new(value + other, @parts + [[:seconds, other]]) end end
Adds another Duration or a Numeric to this Duration. Numeric values are treated as seconds.
# File activesupport/lib/active_support/duration.rb, line 47 def ==(other) if Duration === other other.value == value else other == value end end
Returns true
if other
is also a Duration instance with the same value
, or if other == value
.
# File activesupport/lib/active_support/duration.rb, line 108 def ago(time = ::Time.current) sum(-1, time) end
Calculates a new Time or Date that is as far in the past as this Duration represents.
# File activesupport/lib/active_support/duration.rb, line 85 def eql?(other) Duration === other && other.value.eql?(value) end
Returns true
if other
is also a Duration instance, which has the same parts as this one.
# File activesupport/lib/active_support/duration.rb, line 89 def hash @value.hash end
# File activesupport/lib/active_support/duration.rb, line 125 def respond_to_missing?(method, include_private=false) #:nodoc @value.respond_to?(method, include_private) end
# File activesupport/lib/active_support/duration.rb, line 101 def since(time = ::Time.current) sum(1, time) end
Calculates a new Time or Date that is as far in the future as this Duration represents.
# File activesupport/lib/active_support/duration.rb, line 79 def to_i @value.to_i end
Returns the number of seconds that this Duration represents.
1.minute.to_i # => 60 1.hour.to_i # => 3600 1.day.to_i # => 86400
Note that this conversion makes some assumptions about the duration of some periods, e.g. months are always 30 days and years are 365.25 days:
# equivalent to 30.days.to_i 1.month.to_i # => 2592000 # equivalent to 365.25.days.to_i 1.year.to_i # => 31557600
In such cases, Ruby's core Date and Time should be used for precision date and time arithmetic.
# File activesupport/lib/active_support/duration.rb, line 55 def to_s @value.to_s end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.