2011-09-22 71 views
10

有人可以解釋d1如何大於d2嗎?他們是同一個該死的日子(或者至少他們是這樣看待我的)。測試ActiveSupport :: TimeWithZone對象是否相等

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 > 

至於我的具體應用需求......我有一個iOS應用程序,使一個請求,我的Rails應用程序傳遞一個JSON對象,其中包括其他項目,包括在「2011-09格式NSDates -22T02:24:28-07:00「。我試圖將該日期時間與ActiveSupport :: TimeWithZone類型的「updated_at」進行比較。

謝謝 - WG

回答

19

你會發現,在你的事件模型updated_at屬性具有高於秒的精度。

嘗試輸出的各個時間對象的毫秒部分:

puts d1.usec 
puts d2.usec 

機會是前者會> 0,因爲它是自動設定當對象被持久化,而後者將等於0,因爲你沒有在從中解析它的字符串中不指定任何毫秒。

+0

是的,就是這樣。比較這些日期的最佳方法是什麼,以便在比較中不考慮? – wgpubs

+6

嘗試'd1.to_i == d2.to_i'。 http://www.ruby-doc.org/core/classes/Time.html#M000339 –

相關問題