2

这似乎是一件非常简单的事情,但我遇到了麻烦。我有一个日期,我想知道今天和那个日期之间有多少天。这是我在 ruby​​ 控制台中的尝试:

>> Date.today
=> Wed, 31 Jul 2013
>> date_time
=> Fri Jul 26 00:40:12 -0700 2013
>> Date.parse(date_time.to_s)
=> Wed, 26 Jul 0013
>> Date.today-Date.parse(date_time.to_s)
=> Rational(730492, 1)

为什么我得到这个而不是一个整数?

4

2 回答 2

8

看起来date_time已经是一个 DateTime 对象了,为什么要把它转换成字符串并重新解析呢?

require 'date'

date_time = DateTime.parse('Fri Jul 26 00:40:12 -0700 2013')
date_time.class # => DateTime
(Date.today - date_time).to_i # => 4

如果要忽略 DateTime 的时间部分,请将其转换为日期:

require 'date'

date_time = DateTime.parse('Fri Jul 26 00:40:12 -0700 2013')
date_time.class # => DateTime
(Date.today - date_time.to_date).to_i # => 5
于 2013-07-31T17:50:43.690 回答
2

尝试:

result = Date.new(0) + ("2013-07-31".to_date - "2013-06-31".to_date)

然后您可以使用result.year,result.month等。

或者,您可以使用to_ilike (Date.parse('2013-07-31')-Date.parse('2013-06-31')).to_i ,因为您似乎在减去字符串而不是整数,并to_i解决它。

于 2013-07-31T17:35:10.303 回答