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
#
A
F
S
U
Attributes
[RW] value
[RW] parts
Instance Public 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 21
21:     def +(other)
22:       if Duration === other
23:         Duration.new(value + other.value, @parts + other.parts)
24:       else
25:         Duration.new(value + other, @parts + [[:seconds, other]])
26:       end
27:     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 31
31:     def -(other)
32:       self + (-other)
33:     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 46
46:     def ==(other)
47:       if Duration === other
48:         other.value == value
49:       else
50:         other == value
51:       end
52:     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 69
69:     def ago(time = ::Time.current)
70:       sum(-1, time)
71:     end
from_now(time = ::Time.current)

Alias for since

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 62
62:     def since(time = ::Time.current)
63:       sum(1, time)
64:     end
until(time = ::Time.current)

Alias for ago