Ruby,Rails和两个日期之间的区别

我会让这个例子自言自语:

ruby-1.9.2-p0 > DateTime.now => Mon, 14 Feb 2011 20:02:49 +0100 ruby-1.9.2-p0 > User.first.created_at => Tue, 04 May 2010 07:03:24 CEST +02:00 ruby-1.9.2-p0 > DateTime.now-User.first.created_at TypeError: expected numeric or date from /Users/Jacob/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/date.rb:1356:in `-' from /Users/Jacob/.rvm/gems/ruby-1.9.2-p0@loyaltric_template/gems/activesupport-3.0.3/lib/active_support/core_ext/date/calculations.rb:98:in `minus_with_duration' from (irb):47 from /Users/Jacob/.rvm/gems/ruby-1.9.2-p0@loyaltric_template/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' from /Users/Jacob/.rvm/gems/ruby-1.9.2-p0@loyaltric_template/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' from /Users/Jacob/.rvm/gems/ruby-1.9.2-p0@loyaltric_template/gems/railties-3.0.3/lib/rails/commands.rb:23:in `' from script/rails:6:in `require' from script/rails:6:in `' ruby-1.9.2-p0 > 

什么?!?

.created_at返回一个ActiveSupport::TimeWithZone对象。 尝试

 DateTime.now - User.first.created_at.to_datetime 

你可以改用

 Time.now - User.first.created_at 

这将报告从现在到您的第一个用户创建时间之间的秒数。