【问题标题】:Find average date from collection of dates (Ruby)从日期集合中查找平均日期(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

标签: ruby-on-rails ruby date type-conversion average


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2015-10-05
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多