2011-03-09 88 views
0

我有两个日期,分别是2011-03-01 00:00:00 UTC2011-03-31 00:00:00 UTC。当我尝试在它们之间获得天数时,它将返回2592000.0天。为什么?应该是30天?RoR 3的日期差异

要得到日期之间的日期我使用-date1 - date2。我怎样才能获得正确的区别?

我的环境是Ruby 1.8.7和Rails 3.0.3。


我从数据库取回数据,然后像做以下:

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

数据类型以dB为DateTime

回答

1

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

干杯!

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

+0

Thnx。现在我明白了。 – 2011-03-13 07:18:33

0
 
require 'DateTime' 

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

Now it should be clear. :) 
+0

@Ashish:我不明白你的逻辑。你能否详细说明一下? – 2011-03-09 05:59:33

+0

我已编辑帖子。 – Ashish 2011-03-09 06:33:29

+0

@Ashish:当我使用'(date1-date2).to_i'时,它返回'2592000'。这是不正确的。 – 2011-03-09 08:26:41

1

尝试:

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

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

这种转换,它会工作对于时间和日期时间