从日期集合中查找平均日期(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)的主要内容,如果未能解决你的问题,请参考以下文章
我想使用日期范围“utc_timestamp”字段从 mongodb 集合中获取结果?
如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?