【发布时间】:2010-09-30 16:21:21
【问题描述】:
打开 Rails 控制台并输入:
2.weeks.ago.between? 2.weeks.ago, 1.week.ago
它给你的是真还是假?不,真的,多试几次,它会给你不同的答案。
现在,我在想,因为我们正在比较 2.weeks.ago 和 2.weeks.ago,所以评估这两个语句之间的时间会导致这种行为。
我不能肯定,但我猜是两者之间?方法不包含在内,因此如果两个语句之间经过了几毫秒,上面的代码将评估为 true,因为它将在两个比较日期之间。
但是,如果 CPU 能够以足够快的速度处理此问题,以至于经过的时间可以忽略,那么它将评估为 false。
任何人都可以对此有所了解吗?在一个可能很关键的系统中,这充其量只是一个边缘情况,但是当我的测试看似随机通过和失败时,这让我很头疼。
奇怪的是,这样做时不会发生这种情况:
Date.yesterday.between? Date.yesterday, Date.tomorrow
【问题讨论】:
标签: ruby-on-rails ruby date