测试ActiveSupport :: TimeWithZone对象是否相等

wgp*_*ubs 10 ruby datetime compare activesupport ruby-on-rails-3

有人可以解释d1如何大于d2?他们是相同的日期(或至少他们看起来如何).

Loading development environment (Rails 3.0.8)
ruby-1.9.2-p180 :001 > d1 = Event.first.updated_at
 => Thu, 22 Sep 2011 02:24:28 PDT -07:00 
ruby-1.9.2-p180 :002 > d2 = Time.zone.parse("2011-09-22T02:24:28-07:00")
 => Thu, 22 Sep 2011 02:24:28 PDT -07:00 
ruby-1.9.2-p180 :003 > d1.class
 => ActiveSupport::TimeWithZone 
ruby-1.9.2-p180 :004 > d2.class
 => ActiveSupport::TimeWithZone 
ruby-1.9.2-p180 :005 > d1 > d2
 => true 
ruby-1.9.2-p180 :006 > 
Run Code Online (Sandbox Code Playgroud)

关于我的特定应用程序需求...我有一个iOS应用程序向我的Rails应用程序发出请求,传递一个JSON对象,其中包括格式为"2011-09-22T02:24:28-"的NSDates 07:00".我试图将该日期时间与ActiveSupport :: TimeWithZone类型的"updated_at"进行比较.

谢谢 - wg

Lar*_*eth 21

您会发现updated_atEvent模型中的属性具有比秒更高的精度.

尝试输出各自时间对象的毫秒部分:

puts d1.usec
puts d2.usec
Run Code Online (Sandbox Code Playgroud)

机会是前者将> 0,因为它是在对象持久化时自动设置的,而后者将等于0,因为您没有在解析它的字符串中指定任何毫秒.

  • 试试`d1.to_i == d2.to_i`.http://www.ruby-doc.org/core/classes/Time.html#M000339 (6认同)