Взгляните на business_time .Он может использоваться для обеих целей:
Расчет рабочих дней между двумя датами:
wednesday = Date.parse("October 17, 2018")
monday = Date.parse("October 22, 2018")
wednesday.business_days_until(monday) # => 3
Добавление рабочих дней к определенной дате:
4.business_days.from_now
8.business_days.after(some_date)
Исторический ответ
Когда этот вопрос был задан изначально, business_time
не предоставил метод business_days_until
, поэтому для ответа на первую часть вопроса был предложен метод, приведенный ниже.
Это может быть полезно для тех, кому не нужны другие функции из business_time
и они хотят избежать добавления дополнительных зависимостей.
def business_days_between(date1, date2)
business_days = 0
date = date2
while date > date1
business_days = business_days + 1 unless date.saturday? or date.sunday?
date = date - 1.day
end
business_days
end
Это также может быть хорошонастроен для обработки случаев, которые Tipx упоминает так, как вы хотели бы.