2010-02-18 86 views
11

我有一個猜測表,在每個猜測內只是一個日期。我想知道如何將兩個或更多日期轉換爲平均值。查找日期集合中的平均日期(紅寶石)

<div id="logic"> 
<% foo = Date.today %> 
<% bar = Date.today + 10 %> 
<%= (foo + bar)/2 %> 

這樣的事情,但顯然紅寶石不會讓我分開兩個日期。

+0

兩個日期的平均值在現實世界中的平均值是多少?你是否想在兩個日期之間找到日期的一半?如果你有100個日期,他們的平均概念是什麼? – Simon 2010-02-18 10:52:44

+0

也許它更容易,如果我鏈接到網站,你可以看到兩個日期2010-03-18和2010-02-18,喜歡輸出的平均值的網站http://www.expct.info/products/3並且利用人羣的智慧,越多的人投票越接近它應該得到的iPad發佈的實際日期。 我想我的例子中的平均值是Date.today + 5 – 2010-02-18 11:07:03

回答

13

日期是有點辛苦的工作,你應該使用時間。嘗試轉換的日期,時間:

require 'time' 
foo_time = Time.parse(foo.to_s) 
bar_time = Time.parse(bar.to_s) 

它們轉換成時間戳,然後計算平均值,然後再轉換回時間:

avg = Time.at((foo_time.to_f + bar_time.to_f)/2) 

可以轉換回日期:

avg_date = Date.parse(avg.to_s) 
+0

非常感謝您的幫助,這真棒:) – 2010-02-18 23:27:27

2
to_time.to_i 

是我的朋友;)