Извлечь свободное время между двумя временными диапазонами в рельсах - PullRequest
0 голосов
/ 02 марта 2019

Мне нужна помощь!У меня проблема с такой логикой для моего приложения планирования.Учитывая время между 8:00 и 12:00, и есть расписание, установленное на 9:00 - 10:00, как я могу извлечь свободное время, которое составляет 8:00 - 9:00 и 10:00 - 12:00?

Вот код:

class VacantTimeFinder
  def initialize(args={})
    @schedules = args[:schedules]
    @eight_am = DateTime.new(2000,1,1,8,0,0,DateTime.now.zone)
    @twelve_pm = DateTime.new(2000,1,1,12,0,0,DateTime.now.zone)
  end

  def find!
    vacant_times = []
    @schedules.each do |schedule|
      starts_at = schedule.starts_at
      ends_at   = schedule.ends_at
      if (starts_at..ends_at).overlaps?(@eight_am..@twelve_am)
        #logic goes here...
      end
    end
    vacant_times #formated as ["8AM - 9AM", "10AM - 12PM"]
  end
end

Или любые другие решения будут очень цениться.

1 Ответ

0 голосов
/ 02 марта 2019

Что-то вроде:

result = []
e = @eight
schedules.sort.each do |s|
  result << [e, s.start]
  e = s.end
end
result << [e, @twelve]
result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...