2017-01-18 3 views
0

Привет, Я использовал Google календари, чтобы вытащить график свободных/занятых пользователей. Я хочу иметь возможность использовать этот диапазон дат, а затем выводить все пробелы в новый массив какого-то типа?Найти пробелы в диапазоне дат

Любое направление, указывающее было бы рад.

+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 
Смежные вопросы