Ruby 一天的平均时间?

Ruby 一天的平均时间?,ruby,time,average,Ruby,Time,Average,我正在编写一个Rails应用程序,允许用户输入一天中完成任务的时间 我将时间存储为时间对象,我需要一种方法来获取用户完成任务的平均时间 我怎样才能做到这一点 我尝试用МаъСъъъ的答案 只需对表示为整数的时间对象使用数学方程和语句即可: 例子 对于特定的时间数组也是一样的: 第一: 第二: times = ['2000-01-01 06:15:00 UTC', '2000-01-01 07:18:00 UTC'].map {|t|Time.parse(t)} # => [2000-01-

我正在编写一个Rails应用程序,允许用户输入一天中完成任务的时间

我将时间存储为时间对象,我需要一种方法来获取用户完成任务的平均时间

我怎样才能做到这一点

我尝试用МаъСъъъ的答案


只需对表示为整数的时间对象使用数学方程和语句即可:

例子 对于特定的时间数组也是一样的:

第一:

第二:

times = ['2000-01-01 06:15:00 UTC', '2000-01-01 07:18:00 UTC'].map {|t|Time.parse(t)}
# => [2000-01-01 06:15:00 UTC, 2000-01-01 07:18:00 UTC] 
Time.at(times.map(&:to_i).reduce(:+) / times.size)
# => 2000-01-01 09:46:30 +0300 

您可以按对象在不同日期的时间计算平均值。这样的办法应该行得通

deliveries_at = @deliveries.map { |d| d.time.hour * 3600 + d.time.min * 60 + t.sec }
avg = deliveries_at.inject(:+) / deliveries_at.count
avg_hour = avg / 3600
avg_minute = (avg % 3600) / 60
avg_second = avg % 60

第一行从一天开始收集每次交付的秒数。第二行以秒为单位计算平均值,最后三行将其转换为小时/分钟/秒。

你有一个时间数组吗?@RSB基本上是的。我有一个时间对象数据库。我很容易得到一个。这个问题很好地解释了@RSB,我认为这是不同的。我的是实际的ruby时间对象查看我的答案:reduce0,&:+可以简化为reduce:+。这似乎每次返回的时间与我测试的时间相同it@Deekor显示您的输入数组@МаъСаъъъъъ您还没有理解我的评论。@sawa还没有完全理解=
times = ["2000-01-01 08:13:00 UTC", "2000-01-01 18:14:00 UTC", "2000-01-01 16:55:00 UTC", "2000-01-01 23:53:00 UTC", "2000-01-01 00:56:00 UTC", "2000-01-01 02:57:00 UTC", "2000-01-01 00:01:00 UTC"].map {|t| Time.parse(t) }
Time.at(times.map(&:to_i).reduce(:+) / times.size)
# => 2000-01-01 13:09:51 +0300
times = ['2000-01-01 06:15:00 UTC', '2000-01-01 07:18:00 UTC'].map {|t|Time.parse(t)}
# => [2000-01-01 06:15:00 UTC, 2000-01-01 07:18:00 UTC] 
Time.at(times.map(&:to_i).reduce(:+) / times.size)
# => 2000-01-01 09:46:30 +0300 
deliveries_at = @deliveries.map { |d| d.time.hour * 3600 + d.time.min * 60 + t.sec }
avg = deliveries_at.inject(:+) / deliveries_at.count
avg_hour = avg / 3600
avg_minute = (avg % 3600) / 60
avg_second = avg % 60