从日期集合中查找平均日期(Ruby)

Posted

技术标签:

【中文标题】从日期集合中查找平均日期(Ruby)【英文标题】:Find average date from collection of dates (Ruby) 【发布时间】:2011-01-18 06:42:38 【问题描述】:

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

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

类似这样,但显然 Ruby 不允许我将两个日期分开。

【问题讨论】:

两个日期的平均值在现实世界中意味着什么?你想找到两个日期之间的中间日期吗?如果您有 100 个日期,从概念上讲,它们的平均值是多少? 如果我链接到该站点可能会更容易,expct.info/products/3 你可以看到两个日期 2010-03-18 和 2010-02-18,我喜欢输出两者的平均值并利用群众的智慧,投票的人越多,就越接近它应该发布的 iPad 的实际日期。我猜我的例子中的平均值是 Date.today + 5 【参考方案1】:
to_time.to_i

是我的朋友;)

【讨论】:

【参考方案2】:

日期有点难处理,你应该使用时间。尝试将日期转换为时间:

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)

【讨论】:

以上是关于从日期集合中查找平均日期(Ruby)的主要内容,如果未能解决你的问题,请参考以下文章

在 T-SQL 中查找开始和结束日期(基于集合)

我想使用日期范围“utc_timestamp”字段从 mongodb 集合中获取结果?

如何从 Laravel 集合中获取最小日期

如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?

如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?

如何从对象集合中获取第二个最新日期的对象