Ruby:将日期数组转换为包含每天出现次数的数组

时间:2012-10-09 06:33:21

标签: ruby

我仍然对红宝石很新,但已经坚持了半天这个问题。

我有一个整数形式的日期数组(例如[1351136194, 1350142662, 1350118879]),我正在尝试将其变成一个数组,其中包含接下来30天内每天的出现次数。

基本上,我希望能够查询,例如array[0]代表今天范围内的日期数量,array[1]代表明天等等。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

这样的事情应该有效。基本上,您将时间转换为日期,然后将它们分组,以便您可以轻松识别重复项。然后创建数组:

times = [1351136194, 1350142662, 1350118879]
dates = times.map{|t| Time.at(t).to_date}
occurences = dates.group_by{|d| d}
occurences_by_day = (Date.today..(Date.today + 30)).map{|d| occurences[d] ? occurences[d].size : 0}

答案 1 :(得分:0)

arr = [1351136194, 1350142662, 1350118879]
hash = {}

arr.each do |int_date|
    date = Time.at(int_date).strftime("%d-%b-%Y")
    hash.has_key?(date) ? hash[date] += 1 : hash[date] = 1
end

puts hash #{"25-Oct-2012"=>1, "13-Oct-2012"=>2}