instance method
-
Ruby on Rails 7.2.3
Since v2.2.3Signature
-(other)
Subtracts an interval of time and returns a new TimeWithZone object unless the other value acts_like? time. In which case, it will subtract the other time and return the difference in seconds as a Float.
Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)' now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28.725182881 EST -05:00 now - 1000 # => Mon, 03 Nov 2014 00:09:48.725182881 EST -05:00
If subtracting a Duration of variable length (i.e., years, months, days), move backward from #time, otherwise move backward from #utc, for accuracy when moving across DST boundaries.
For instance, a time - 24.hours will go subtract exactly 24 hours, while a time - 1.day will subtract 23-25 hours, depending on the day.
now - 24.hours # => Sun, 02 Nov 2014 01:26:28.725182881 EDT -04:00 now - 1.day # => Sun, 02 Nov 2014 00:26:28.725182881 EDT -04:00
If both the TimeWithZone object and the other value act like Time, a Float will be returned.
Time.zone.now - 1.day.ago # => 86399.999967
Parameters
-
otherreq
Source
# File activesupport/lib/active_support/time_with_zone.rb, line 333
def -(other)
if other.acts_like?(:time)
getutc - other.getutc
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
Defined in activesupport/lib/active_support/time_with_zone.rb line 333
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveSupport::TimeWithZone