如何在rails中添加和减去`Date`

时间:2014-11-07 07:45:59

标签: ruby-on-rails ruby

我想查看从现在开始的特定日期的日期,所以我这样写了:

(Date.today + 2.days) - Date.today > 1.days

与我的想法相反,这会返回false

我发现了由不同类型的类引起的问题。

[13] pry(main)> (Date.today - Date.today)
=> (0/1)
[14] pry(main)> (Date.today - Date.today).class
=> Rational

但我不知道如何规避问题,有人知道如何添加或减去Date课程吗?

3 个答案:

答案 0 :(得分:0)

由于您想要添加天数,您可能只想:

▶ (Date.today + 2) - Date.today > 1
# ⇒ true
▶ (Date.today + 2).class
# ⇒ Date < Object
▶ Date.today + 2
# ⇒ #<Date: 2014-11-09 ((2456971j,0s,0n),+0s,2299161j)>

希望它有所帮助。

答案 1 :(得分:0)

针对您的特定问题,您可以

Date.today + 2 - Date.today > 1

答案 2 :(得分:0)

你的问题不明确。最大的错误是你试图比较不均匀的对象。

一方面,你有日期和持续时间对象(2.days),另一方面你有持续时间。这就像比较汽车和水果一样。

(Date.today + 2.days) - Date.today > 1.days

一种可能的解决方案是使用等式的algebric属性,允许您在等式的两边添加相同的值。

Date.today + 2.days > Date.today + 1.days

好处是你将比较两个同质对象。

2.1.1 :005 > Date.today + 2.days > Date.today + 1.days
 => true 

您也可以使用相同的时间实例编写相同的表达式(与您正在进行的添加和减去相同的Date.today非常接近)

time = Date.today
2.days.from_now(Date.time) > 1.days.from_now(time)