class ActiveSupport::TimeWithZone
def -(other)
Time.zone.now - 1.day.ago # => 86399.999967
will be returned.
If both the TimeWithZone object and the other value act like Time, a Float
now - 1.day # => Sun, 02 Nov 2014 00:26:28.725182881 EDT -04:00
now - 24.hours # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00
time - 1.day will subtract 23-25 hours, depending on the day.
For instance, a time - 24.hours will go subtract exactly 24 hours, while a
when moving across DST boundaries.
move backward from #time, otherwise move backward from #utc, for accuracy
If subtracting a Duration of variable length (i.e., years, months, days),
now - 1000 # => Mon, 03 Nov 2014 00:09:48.725182881 EST -05:00
now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00
Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
other time and return the difference in seconds as a Float.
the other value +acts_like?+ time. In which case, it will subtract the
Subtracts an interval of time and returns a new TimeWithZone object unless
def -(other) if other.acts_like?(:time) to_time - other.to_time elsif duration_of_variable_length?(other) method_missing(:-, other) else result = utc.acts_like?(:date) ? utc.ago(other) : utc - other rescue utc.ago(other) result.in_time_zone(time_zone) end end