ruby-on-rails – 计算Ruby中日期时间之间的平均天数
发布时间:2020-12-17 02:40:15 所属栏目:百科 来源:网络整理
导读:我想在 Ruby中列出日期时间列表,然后计算它们之间的天数,然后平均这些日期.它是否正确?有没有更短的方法来做到这一点? dates = ["2012-08-05 00:00:00 UTC","2012-06-17 00:00:00 UTC","2012-06-15 00:00:00 UTC","2011-06-06 00:00:00 UTC"]difference =
我想在
Ruby中列出日期时间列表,然后计算它们之间的天数,然后平均这些日期.它是否正确?有没有更短的方法来做到这一点?
dates = ["2012-08-05 00:00:00 UTC","2012-06-17 00:00:00 UTC","2012-06-15 00:00:00 UTC","2011-06-06 00:00:00 UTC"] difference = Array.new dates.each_with_index do |date,index| if index != 0 difference << date.to_date - dates[index - 1].to_date end end avg = difference.inject{ |sum,el| sum + el }.to_f / arr.size 那会以天数格式输出吗? 如果您愿意,我可以给我一个Rails版本,因为我将从模型字段中提取日期时间. 解决方法
我认为你有一个一个接一个的问题.如果您在日期中有n个值,那么您将在连续对之间存在n-1个差异,因此您的平均值应为:
avg = difference.inject{ |sum,el| sum + el }.to_f / (arr.size - 1) 而你的 avg = difference.inject(:+).to_f / (arr.size - 1) 无论如何,你可以使用 dates.map(&:to_date).each_cons(2).map { |d1,d2| d1 - d2 }.inject(:+) / (dates.length - 1) 首先,我们可以使用map(& to_date)将所有内容转换为日期,而不是每次需要日期而不是字符串时转换.然后each_cons(2)以连续对的方式迭代数组(即[1,2,3,4]被迭代为[[1,2],[2,3],[3,4]]).然后是一个简单的映射来获取对之间的差异并注入(:)以将它们全部添加起来. 上面的内容将为您提供 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |