Steps to reproduce
Is this a excepted behaviour?
- Open the rails console.
- Type the following command:
Time.zone.yesterday - Time.zone.now
Output:
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/date/calculations.rb:104:in `-': expected numeric (TypeError)
Time.zone.now - Time.zone.yesterday
Output:
3.1.2 :002 > Time.zone.now - Time.zone.yesterday
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:209:in `ago': undefined method `-@' for Wed, 21 Sep 2022:Date (NoMethodError)
since(-seconds)
^
Did you mean? -
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:294:in `-': can't convert Date into an exact number (TypeError)
Time.zone.now - Time.zone.yesterday
Output:
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/date/calculations.rb:104:in `-': expected numeric (TypeError)
3.1.2 :003 > Time.zone.now - Date.yesterday
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:209:in `ago': undefined method `-@' for Wed, 21 Sep 2022:Date (NoMethodError)
since(-seconds)
^
Did you mean? -
/Users/manishsharma/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/core_ext/time/calculations.rb:294:in `-': can't convert Date into an exact number (TypeError)
System configuration
Rails version: 7.0.3.1
Ruby version: 3.1.2
Time.zone.yesterdayorTime.zone.todayreturns date whereasTime.zone.nowreturns a timestamp. And you can't calculate diff between a date and a timestamp. The errors you are getting are expected.