arrays - 从哈希数组计算平均时间

标签 arrays ruby datetime hash average

我正在尝试从哈希数组计算平均时间。这是数组。

array = [
  {"startTime"=>"2015-12-05T07:49:30.000Z", "endTime"=>"2015-12-05T15:56:30.000Z"},
  {"startTime"=>"2015-12-04T07:02:30.000Z", "endTime"=>"2015-12-04T14:59:30.000Z"},
  {"id"=>"5660614e8a3b090700bad845", "userId"=>"55cd59542d98600100397c12", "day"=>"2015-12-03", "startTime"=>"2015-12-03T06:02:32.000Z", "endTime"=>"2015-12-03T13:38:32.000Z"},
  {"startTime"=>"2015-12-02T09:17:33.000Z", "endTime"=>"2015-12-02T15:27:33.000Z"},
  {"startTime"=>"2015-12-01T05:45:36.000Z", "endTime"=>"2015-12-01T13:50:36.000Z"}
]

我正在尝试获取平均开始时间和结束时间。到目前为止,这是我尝试过的方法。

avg = Time.at(array.map {|x| x['startTime']}.reduce(:+).to_f / array.size.to_i)

我得到的结果是 1969-12-31 16:06:43 -0800。这是不正确的。

最佳答案

require 'time'

array = [
  {"startTime"=>"2015-12-05T07:49:30.000Z", "endTime"=>"2015-12-05T15:56:30.000Z"},
  {"startTime"=>"2015-12-04T07:02:30.000Z", "endTime"=>"2015-12-04T14:59:30.000Z"},
  {"id"=>"5660614e8a3b090700bad845", "userId"=>"55cd59542d98600100397c12", "day"=>"2015-12-03", "startTime"=>"2015-12-03T06:02:32.000Z", "endTime"=>"2015-12-03T13:38:32.000Z"},
  {"startTime"=>"2015-12-02T09:17:33.000Z", "endTime"=>"2015-12-02T15:27:33.000Z"},
  {"startTime"=>"2015-12-01T05:45:36.000Z", "endTime"=>"2015-12-01T13:50:36.000Z"}
]

times = array.map{|el| el['startTime']}.map{|el| Time.parse(el) }
#=> [2015-12-05 07:49:30 UTC, 2015-12-04 07:02:30 UTC, 2015-12-03 06:02:32 UTC, 2015-12-02 09:17:33 UTC, 2015-12-01 05:45:36 UTC]

average_time = Time.at(times.map(&:to_f).inject(:+) / times.size)
#=> 2015-12-03 08:11:32 +0100

关于arrays - 从哈希数组计算平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166625/

相关文章:

ruby - 如何使用 Ruby 在图中查找连通分量

ruby-on-rails - ruby/rails 中的 worker 是什么?

python - 使用 Python 日期时间计算时间窗口

python字符串到日期时间,找到昨天然后返回字符串

java - 使用 getParameterValues 和数组

c++ - 我正在尝试比较来自两个输入文件的数据以查看一组是否小于另一组

ruby-on-rails - 使用 Active Admin 时无法更新或删除

javascript - Rethinkdb 对象数组到数组对象

javascript - 如何在不使用索引器(javascript)的情况下访问数组的元素?

PHP,代码点火器 : How to Set Date/Time based on users timezone/location globally in a web app?