2011-09-22 29 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 > 

...私は他の項目の中で、2011-09」の形式でNSDatesを含み、というJSONオブジェクトを渡し、私のRailsアプリケーションに要求を行うiOSアプリを持っています-22T02:24:28-07:00」私はそのdatetimeをActiveSupport :: TimeWithZone型の "updated_at"と比較しようとしています。

おかげ -

答えて

19

WGあなたのイベントモデルで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 –

関連する問題