【问题标题】:Testing ActiveSupport::TimeWithZone objects for equality测试 ActiveSupport::TimeWithZone 对象是否相等
【发布时间】:2011-11-22 16:41:15
【问题描述】:

有人能解释一下 d1 是如何大于 d2 的吗?它们是同一个该死的日期(或者至少在我看来它们是这样的)。

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 > 

关于我的特定应用程序需求......我有一个 iOS 应用程序向我的 Rails 应用程序发出请求,传递一个 JSON 对象,其中包括“2011-09-22T02:24”格式的 NSDates :28-07:00。”我正在尝试将该日期时间与 ActiveSupport::TimeWithZone 类型的“updated_at”进行比较。

谢谢-wg

【问题讨论】:

    标签: ruby ruby-on-rails-3 datetime compare activesupport


    【解决方案1】:

    您会发现您的 Event 模型中的updated_at 属性具有比秒更高的精度。

    尝试输出各自时间对象的毫秒部分:

    puts d1.usec
    puts d2.usec
    

    前者可能 > 0,因为它是在持久化对象时自动设置的,而后者将等于 0,因为您没有在解析它的字符串中指定任何毫秒。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多