2010-02-18 85 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 

是我的朋友;)