这似乎是一件非常简单的事情,但我遇到了麻烦。我有约会,我想知道今天和那个日期之间有多少天。这是我在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)
为什么我得到这个而不仅仅是一个整数?
答案 0 :(得分: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
答案 1 :(得分:2)
尝试:
result = Date.new(0) + ("2013-07-31".to_date - "2013-06-31".to_date)
然后您可以使用result.year
,result.month
等
或者,您可以to_i
使用(Date.parse('2013-07-31')-Date.parse('2013-06-31')).to_i
因为你似乎在减去字符串而不是整数,to_i
解决了它。