RoR 3的日期差异

时间:2011-03-09 05:41:47

标签: ruby-on-rails-3 datetime

我有2个日期2011-03-01 00:00:00 UTC2011-03-31 00:00:00 UTC。当我试图让他们之间的日子时,它会返回2592000.0天。为什么?应该是30天?

为了在日期之间获取天数,我使用- date1 - date2。我怎样才能得到正确的差异?

我的环境是带有Rails 3.0.3的Ruby 1.8.7。


我从db检索数据然后执行以下操作:

//--some html code
<td>
<%@data.each do |data|%>
   <%=(@data.date1 - @data.date2).to_i%>
<%end%>
</td>
//--some html code

db中的数据类型为DateTime

3 个答案:

答案 0 :(得分:1)

2592000实际上是正确的。很快。 2592000秒是30天。 (30天* 24小时/天* 60分钟/小时* 60秒/分钟= 2592000秒)。

干杯!

编辑:将秒数转换为天数,除以24 * 60 * 60或86400。

答案 1 :(得分:1)

尝试:

(@data.date1 - @data.date2).to_i / 1.day   # 1.day.to_i => 86400

(@data.date1.to_date - @data.date2.to_date).to_i

通过此转换,它将同时适用于Time和DateTime

答案 2 :(得分:0)

require 'DateTime'

today = DateTime.now
bday = today - 1063 #Date before 1063 days
(today - birthday).to_i # 1063

Now it should be clear. :)