2011-09-22 31 views
10

Ai đó có thể giải thích cách d1 lớn hơn d2? Họ là những ngày chết tiệt tương tự (hoặc ít nhất đó là cách họ nhìn tôi).Thử nghiệm ActiveSupport :: Các đối tượng TimeWithZone cho sự bình đẳng

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 > 

Đối với nhu cầu ứng dụng cụ thể của tôi ... Tôi có một ứng dụng iOS mà làm cho một yêu cầu đến ứng dụng Rails của tôi đi qua một đối tượng JSON rằng, trong số các mặt hàng khác, bao gồm NSDates trong định dạng của "2011-09 -22T02: 24: 28-07: 00. " Tôi đang cố gắng so sánh datetime đó với "updated_at" có kiểu ActiveSupport :: TimeWithZone.

Cảm ơn - wg

Trả lời

19

Bạn sẽ thấy rằng updated_at thuộc tính trong mô hình tổ chức sự kiện của bạn có một độ chính xác cao hơn so với giây.

Hãy thử outputting mili giây một phần của đối tượng thời gian tương ứng của bạn:

puts d1.usec 
puts d2.usec 

Rất có thể trước đây sẽ được> 0 vì nó đã được thiết lập tự động khi đối tượng được tồn, trong khi sau này sẽ bằng 0 vì bạn đã làm không chỉ định bất kỳ mili giây nào trong chuỗi mà bạn đã phân tích cú pháp đó.

+0

Đúng vậy. Điều gì sẽ là cách tốt nhất để so sánh những ngày này để không phải là yếu tố trong so sánh? – wgpubs

+6

Hãy thử 'd1.to_i == d2.to_i'. http://www.ruby-doc.org/core/classes/Time.html#M000339 –

Các vấn đề liên quan