Class: ActiveSupport::Duration
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activesupport/lib/active_support/duration.rb |
Overview
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)
Instance Attribute Summary
Instance Method Summary
-
#+(other)
Adds another
Duration
or a ::Numeric to thisDuration
. -
#-(other)
Subtracts another
Duration
or a ::Numeric from thisDuration
. - #<=>
-
#==(other)
Returns
true
ifother
is also aDuration
instance with the same #value, or ifother == value
. - #ago(time = ::Time.current) (also: #until)
-
#eql?(other) ⇒ Boolean
Returns
true
ifother
is also aDuration
instance, which has the same parts as this one. -
#from_now(time = ::Time.current)
Alias for #since.
- #hash
-
#kind_of?(klass)
Alias for #is_a?.
-
#respond_to_missing?(method, include_private = false) ⇒ Boolean
:nodoc
. - #since(time = ::Time.current) (also: #from_now)
-
#to_i
Returns the number of seconds that this
Duration
represents. - #to_s
-
#until(time = ::Time.current)
Alias for #ago.
Instance Attribute Details
#parts (rw)
[ GitHub ]# File 'activesupport/lib/active_support/duration.rb', line 10
attr_accessor :value, :parts
#value (rw)
[ GitHub ]# File 'activesupport/lib/active_support/duration.rb', line 10
attr_accessor :value, :parts
Instance Method Details
#+(other)
[ GitHub ]#-(other)
# File 'activesupport/lib/active_support/duration.rb', line 28
def -(other) self + (-other) end
#<=>
[ GitHub ]# File 'activesupport/lib/active_support/duration.rb', line 129
delegate :<=>, to: :value
#==(other)
Returns true
if other
is also a Duration
instance with the same #value, or if other == value
.
#ago(time = ::Time.current) Also known as: #until
[ GitHub ]
#eql?(other) ⇒ Boolean
Returns true
if other
is also a Duration
instance, which has the same parts as this one.
#from_now(time = ::Time.current)
Alias for #since.
# File 'activesupport/lib/active_support/duration.rb', line 104
alias :from_now :since
#hash
[ GitHub ]# File 'activesupport/lib/active_support/duration.rb', line 89
def hash @value.hash end
#kind_of?(klass)
Alias for #is_a?.
# File 'activesupport/lib/active_support/duration.rb', line 39
alias :kind_of? :is_a?
#respond_to_missing?(method, include_private = false) ⇒ Boolean
:nodoc
# 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
#since(time = ::Time.current) Also known as: #from_now
[ GitHub ]#to_i
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 79
def to_i @value.to_i end
#to_s
[ GitHub ]# File 'activesupport/lib/active_support/duration.rb', line 55
def to_s @value.to_s end
#until(time = ::Time.current)
Alias for #ago.
# File 'activesupport/lib/active_support/duration.rb', line 111
alias :until :ago