问题 查找日期集合中的平均日期(Ruby)


我有一个猜测表,每个猜测只是一个日期。我想知道如何将两个或更多日期变成平均值。

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

像这样的东西,但显然Ruby不会让我分开这两个日期。


913
2018-02-18 10:49


起源

两个日期的平均值在现实世界中意味着什么?你想在两个日期之间找到日期吗?如果你有100个日期,他们的平均概念是什么? - Simon
如果我链接到网站,也许更容易, expct.info/products/3 你可以看到2010-03-18和2010-02-18的两个日期,id喜欢输出两者的平均值并驾驭人群的智慧,越多人投票越接近iPad发布它的实际日期 应该 得到。我想我的例子中的平均值是Date.today + 5 - Karl Entwistle


答案:


日期有点难以使用,您应该使用Time。尝试将日期转换为时间:

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)

13
2018-02-18 11:33



非常感谢你的帮助,那太棒了:) - Karl Entwistle


to_time.to_i

是我的朋友 ;)


2
2018-02-18 11:04