module InactiveSupport::CoreExtensions::Numeric::Time
Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.
These methods use Time#advance for precise date calculations when using from_now
, ago, etc. as well as adding or subtracting their results from a Time
object. For example:
# equivalent to Time.now.advance(:months => 1) 1.month.from_now # equivalent to Time.now.advance(:years => 2) 2.years.from_now # equivalent to Time.now.advance(:months => 4, :years => 5) (4.months + 5.years).from_now
While these methods provide precise calculation when used as in the examples above, care should be taken to note that this is not true if the result of ‘months’, ‘years’, etc is converted before use:
# equivalent to 30.days.to_i.from_now 1.month.to_i.from_now # equivalent to 365.25.days.to_f.from_now 1.year.to_f.from_now
In such cases, Ruby’s core Date and Time should be used for precision date and time arithmetic
Public Instance Methods
ago(time = ::Time.now)
click to toggle source
Reads best without arguments: 10.minutes.ago
# File lib/inactive_support/core_ext/numeric/time.rb, line 74 def ago(time = ::Time.now) time - self end
Also aliased as: until
days()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 48 def days InactiveSupport::Duration.new(self * 24.hours, [[:days, self]]) end
Also aliased as: day
fortnights()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 58 def fortnights InactiveSupport::Duration.new(self * 2.weeks, [[:days, self * 14]]) end
Also aliased as: fortnight
hours()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 43 def hours InactiveSupport::Duration.new(self * 3600, [[:seconds, self * 3600]]) end
Also aliased as: hour
minutes()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 38 def minutes InactiveSupport::Duration.new(self * 60, [[:seconds, self * 60]]) end
Also aliased as: minute
months()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 63 def months InactiveSupport::Duration.new(self * 30.days, [[:months, self]]) end
Also aliased as: month
seconds()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 33 def seconds InactiveSupport::Duration.new(self, [[:seconds, self]]) end
Also aliased as: second
since(time = ::Time.now)
click to toggle source
Reads best with argument: 10.minutes.since(time)
# File lib/inactive_support/core_ext/numeric/time.rb, line 82 def since(time = ::Time.now) time + self end
Also aliased as: from_now
weeks()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 53 def weeks InactiveSupport::Duration.new(self * 7.days, [[:days, self * 7]]) end
Also aliased as: week
years()
click to toggle source
# File lib/inactive_support/core_ext/numeric/time.rb, line 68 def years InactiveSupport::Duration.new(self * 365.25.days, [[:years, self]]) end
Also aliased as: year