2011-09-22 18 views
10

Birisi d1'in d2'den büyük olduğunu açıklayabilir mi? Onlar aynı lanet tarihlerdir (ya da en azından bana nasıl bakarlar).Test ActiveSupport :: TimeWithZone eşitliği için nesneler

benim özel uygulama ihtiyaçlarına ile ilgili olarak
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 > 

... Ben, diğer öğeler arasında, 2011-09" biçiminde NSDates içeren bir JSON nesnesi geçirmeden benim Raylar uygulamasına bir istekte iOS uygulaması var -22T02: 24: 28-07: 00 ". Bu datetime, ActiveSupport :: TimeWithZone türünde "updated_at" ile karşılaştırmaya çalışıyorum.

Teşekkür -

cevap

19

wg Sen Olay modelinde updated_at nitelik saniyeden daha yüksek bir kesinlik olduğunu göreceksiniz. Lütfen ilgili zaman nesnelerin milisaniye bölümünü çıkışı

Dene:

puts d1.usec 
puts d2.usec 

Şansı var kalıcı nesne ne zaman yaptın beri ikincisi 0 eşit olur iken, otomatik olarak ayarlanır beri> 0 olacak eski Ayrıştırdığınız dizede milisaniye belirtmezsiniz.

+0

Evet, işte bu. Bu tarihleri ​​karşılaştırmanın en iyi yolu hangisinin karşılaştırmaya dahil edilmemesidir? – wgpubs

+6

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