测试ActiveSupport :: TimeWithZone对象是否相等 [英] Testing ActiveSupport::TimeWithZone objects for equality
问题描述
有人可以解释d1是否大于d2?
载入开发环境(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-22T02:24:28-07:00格式的NSDates。我试图比较该datetime与类型ActiveSupport :: TimeWithZone的updated_at。
谢谢 - wg
尝试输出您各自的时间对象的毫秒部分:
puts d1.usec
puts d2.usec
几率是> 0,因为它被自动设置当对象被持久化,而后者将等于0,因为你没有在解析它的字符串中指定任何毫秒。
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.
这篇关于测试ActiveSupport :: TimeWithZone对象是否相等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!