Answers:
从结束日期减去开始日期:
endDate - beginDate
DateTime
对象,请确保先转换为对象,Date
否则它返回秒数(我想)。
Date
对象会为您提供一个Rational
您可能需要将其类型转换为整数的方法,例如(endDate - beginDate).to_i
这在Ruby 2.0中可能已更改
当我这样做时,我得到了分数。例如在控制台上(irb或rails c)
2.0.0-p195 :005 > require 'date'
=> true
2.0.0-p195 :006 > a_date = Date.parse("25/12/2013")
=> #<Date: 2013-12-25 ((2456652j,0s,0n),+0s,2299161j)>
2.0.0-p195 :007 > b_date = Date.parse("10/12/2013")
=> #<Date: 2013-12-10 ((2456637j,0s,0n),+0s,2299161j)>
2.0.0-p195 :008 > a_date-b_date
=> (15/1)
当然,强制转换为int可以达到预期的结果
2.0.0-p195 :009 > (a_date-b_date).to_i
=> 15
这也适用于DateTime对象,但是您必须考虑秒数,例如本示例
2.0.0-p195 :017 > a_date_time = DateTime.now
=> #<DateTime: 2013-12-31T12:23:03-08:00 ((2456658j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :018 > b_date_time = DateTime.now-20
=> #<DateTime: 2013-12-11T12:23:06-08:00 ((2456638j,73386s,69998000n),-28800s,2299161j)>
2.0.0-p195 :019 > a_date_time - b_date_time
=> (1727997655759/86400000000)
2.0.0-p195 :020 > (a_date_time - b_date_time).to_i
=> 19
2.0.0-p195 :021 > c_date_time = a_date_time-20
=> #<DateTime: 2013-12-11T12:23:03-08:00 ((2456638j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :022 > a_date_time - c_date_time
=> (20/1)
2.0.0-p195 :023 > (a_date_time - c_date_time).to_i
=> 20
这个怎么样?
(beginDate...endDate).count
范围是一组唯一的序列号。并且...
是Range的专有文字。
所以beginDate..(endDate - 1)
是一样的。除了不是。
如果beginDate等于endDate,则第一个元素将由于唯一性而被排除,...
并将排除最后一个。因此,如果我们想要.count
今天和今天之间的日期,它将返回0。
0
,这在某些情况下效果很好。另外,如果两个日期相同,则将返回0。它还将返回一个纯整数。其他答案必须转换为整数,或者如果结果为负,则可能必须转换为0。
所有这些都使我获得了正确的结果,但是我最后还是做了
DateTime.now.mjd - DateTime.parse("01-01-1995").mjd
YYYY-MM-DD
格式的日期,这也是每个人都应该使用的格式。