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)
``````
Methods
#
A
F
S
U
Attributes
 [RW] parts [RW] value
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 19
def +(other)
if Duration === other
Duration.new(value + other.value, @parts + other.parts)
else
Duration.new(value + other, @parts + [[:seconds, other]])
end
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 29
def -(other)
self + (-other)
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 44
def ==(other)
if Duration === other
other.value == value
else
other == value
end
end```
ago(time = ::Time.current)

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

Also aliased as: until
```# File activesupport/lib/active_support/duration.rb, line 67
def ago(time = ::Time.current)
sum(-1, time)
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.

Also aliased as: from_now
```# File activesupport/lib/active_support/duration.rb, line 60
def since(time = ::Time.current)
sum(1, time)
end```
until(time = ::Time.current)
Alias for: ago