开发者

Testing ActiveSupport::TimeWithZone objects for equality

开发者 https://www.devze.com 2023-04-06 11:42 出处:网络
Can someone explain how d1 is greater than d2?They are the same damn dates (or atleast that is how they look to me).

Can someone explain how d1 is greater than d2? They are the same damn dates (or atleast that is how they look to me).

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 > 

With regards to my specific application needs ... I have an iOS app that makes a request to my Rails application passing a JSON object that, amongst other items, includes NSDates in the format of "2011-09-22T02:24:28-07:00." I'm attempting to compare that datetime with the "updated_at" which is of type ActiveSupport::TimeWithZone.

Thanks - wg


You will find that the updated_at attribute in your Event model has a higher precision than seconds.

Try outputting the milliseconds part of your respective time objects:

puts d1.usec
puts d2.usec

Chances are the former will be > 0 since it was set automatically when the object was persisted, while the latter will equal 0 since you did not specify any milliseconds in the string from which you parsed it.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号