2017-01-18 169 views
0

嗨夥計我使用谷歌日曆來爲用戶提供免費/繁忙時間表。我希望能夠採取這些日期範圍,然後輸出所有的差距到一個新的數組中?查找日期範圍內的差距

任何方向指向將不勝感激。

+0

難道你只是迭代通過這些天/或小時,然後將空閒時間存儲在數組中嗎? –

+0

是的,但我不確定如何檢查重疊,因爲我使用日期範圍? – trowse

回答

1

第1步:將所有日期(作爲整數)存入已排序(按時間)的二維數組中,注意每個日期是時間範圍的開始還是結束。例如:

array = [[1484715564, 'start'], [1484715565, 'start'], [1484715569, 'end'], [1484715587, 'end'], ...] 

然後,所有你需要做的就是保持跟蹤你是否已經通過許多end勞燕分飛爲start秒,如果有,請予以注意!

num_starts = 0 
gap_start = 0 
gaps = [] 
array.each do |date, which_end| 
    if which_end == 'start' 
    num_starts += 1 
    if num_starts == 1 
     gaps << [gap_start, date] 
    end 
    else 
    num_starts -= 1 
    if num_starts == 0 
     gap_start = date 
    end 
    end 
end