edge badge

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
E
F
H
S
T
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 18
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 28
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 47
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 84
def ago(time = ::Time.current)
  sum(-1, time)
end
eql?(other)

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 61
def eql?(other)
  Duration === other && other.value.eql?(value)
end
from_now(time = ::Time.current)
Alias for: since
hash()
# File activesupport/lib/active_support/duration.rb, line 65
def hash
  @value.hash
end
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 77
def since(time = ::Time.current)
  sum(1, time)
end
to_s()
# File activesupport/lib/active_support/duration.rb, line 55
def to_s
  @value.to_s
end
until(time = ::Time.current)
Alias for: ago