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
day()
Alias for: days
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
fortnight()
Alias for: fortnights
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
from_now(time = ::Time.now)

Reads best without arguments: 10.minutes.from_now

Alias for: since
hour()
Alias for: hours
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
minute()
Alias for: minutes
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
month()
Alias for: months
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
second()
Alias for: seconds
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
until(time = ::Time.now)

Reads best with argument: 10.minutes.until(time)

Alias for: ago
week()
Alias for: weeks
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
year()
Alias for: years
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