1

有人可以告诉我这是否是红宝石时间课程中的错误吗?

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。

谢谢你。

** 更新 **

而且,现在它可以工作了,除了我上床睡觉、起床和重新运行之外没有任何变化。这很奇怪;我上面提供的片段是直接从我的终端窗口剪切和粘贴的......我正在针对 activerecord/support/model/etc 的 3.0.10 运行

感谢大家对此事的看法!

4

2 回答 2

3

虽然time.to_s不包括它,但 Time 对象包含毫秒 - 不仅如此,它还包含小数秒(具有更高的分辨率)(请参阅:Time#subsec)。

Time.now == Time.now将已经是错误的,因为每次调用now都需要几个 CPU 滴答声才能完成。也看看Time#eql? .

如果 time 和 other_time 都是具有相同秒数和小数秒数的 Time 对象,则返回 true。

于 2011-08-29T11:30:27.543 回答
0

当然这不是类中的错误Time,因为差异似乎在于类的day方法Fixnum。而且,这不是原始Fixnum类的方法;它应该在你require之前的某个文件中定义。

于 2011-08-29T11:24:10.650 回答