有人能告诉我这是不是红宝石时间班的错误?
ruby-1.8.7-p334 :021 > now = Time.now
=> Mon Aug 29 03:32:25 -0700 2011
ruby-1.8.7-p334 :022 > raise "This should not fail" if (now + 1.day != now + 1.day.to_i)
RuntimeError: This should not fail
from (irb):22
ruby-1.8.7-p334 :023 >
正如您所看到的,我遇到了运行时错误,我不相信我应该这样做。我最近升级了active_support gem,我相信它提供了这个功能。
谢谢。
**更新**
而且,现在它起作用,除了我睡觉,醒来和重新运行之外没有任何变化。这很奇怪;我上面提供的代码片段是直接从我的终端窗口剪切粘贴的....我正在运行3.0.10的activerecord / support / model / etc
感谢大家对此事的想法!
答案 0 :(得分:3)
虽然time.to_s
不包含它,但Time对象包含毫秒 - 不仅如此,它还包含小数秒(分辨率更高)(参见:Time#subsec)。
Time.now == Time.now
已经是假的,因为每次调用now
都需要几个CPU滴答才能完成。另请查看Time#eql?。
如果time和other_time都是具有相同秒数和小数秒的Time对象,则返回true。
答案 1 :(得分:0)
肯定这不是Time
类中的错误,因为差异似乎在day
类的Fixnum
方法中。而且,这不是原始Fixnum
类的方法;它应该在require
之前的某个文件中定义。
答案 2 :(得分:0)
@marcel-jackwerth所说的是正确的。如果你想看到它们相同(因为很有可能在同一秒内处理呼叫),请将其插入:
ruby-1.8.7-p330 :021 > (Time.now + 1.day).to_i == (Time.now + 1.day).to_i
=> true