Provides accurate date and time measurements using Date#advance and Time#advance, respectively. It mainly supports the methods on Numeric. Example:

  1.month.ago       # equivalent to Time.now.advance(:months => -1)
Methods
Attributes
[RW] value
[RW] parts
Public Instance methods
+(other)

Adds another Duration or a Numeric to this Duration. Numeric values are treated as seconds.

      # File activesupport/lib/active_support/duration.rb, line 20
20:     def +(other)
21:       if Duration === other
22:         Duration.new(value + other.value, @parts + other.parts)
23:       else
24:         Duration.new(value + other, @parts + [[:seconds, other]])
25:       end
26:     end
-(other)

Subtracts another Duration or a Numeric from this Duration. Numeric values are treated as seconds.

      # File activesupport/lib/active_support/duration.rb, line 30
30:     def -(other)
31:       self + (-other)
32:     end
==(other)

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 45
45:     def ==(other)
46:       if Duration === other
47:         other.value == value
48:       else
49:         other == value
50:       end
51:     end
ago(time = ::Time.current)

Calculates a new Time or Date that is as far in the past as this Duration represents.

This method is also aliased as until
      # File activesupport/lib/active_support/duration.rb, line 68
68:     def ago(time = ::Time.current)
69:       sum(1, time)
70:     end
since(time = ::Time.current)

Calculates a new Time or Date that is as far in the future as this Duration represents.

This method is also aliased as from_now
      # File activesupport/lib/active_support/duration.rb, line 61
61:     def since(time = ::Time.current)
62:       sum(1, time)
63:     end