根据开始日期和每周天数数据计算结束日期

Calculate end date from start date and days per week data

我有以下变量

INPUT
start_date = 1 JUN 2020
session_days = [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
sessions_per_week_count = 7 # from above data
total sesions = 20


OUTPUT
20 JUN 2020

根据以上数据,我们可以计算出end_date应该是2018年6月20日

我需要帮助编写 algorithm/formula 来计算基于日历的可变输入数据的结束日期。

如有任何建议,我们将不胜感激。

最后,我想出了一个非常简单的方法 ruby

def session_dates(date, weekdays_arr, number_of_working_days)
  result = []
  while result.size < number_of_working_days
    if weekdays_arr.include? date.wday
      result << date
    end
    date += 1
  end
  result
end

通过调用这样的方法

start_date = Date.today.beginning_of_month
session_days_in_week = [0,1,2,3,4,5,6] # week starts from 0(Sunday) 
result = session_dates(start_date, session_days_in_week, 20)

我可以在输出中得到工作日的所有日期

[
    [ 0] Mon, 01 Jun 2020,
    [ 1] Tue, 02 Jun 2020,
    [ 2] Wed, 03 Jun 2020,
    [ 3] Thu, 04 Jun 2020,
    [ 4] Fri, 05 Jun 2020,
    [ 5] Sat, 06 Jun 2020,
    [ 6] Sun, 07 Jun 2020,
    [ 7] Mon, 08 Jun 2020,
    [ 8] Tue, 09 Jun 2020,
    [ 9] Wed, 10 Jun 2020,
    [10] Thu, 11 Jun 2020,
    [11] Fri, 12 Jun 2020,
    [12] Sat, 13 Jun 2020,
    [13] Sun, 14 Jun 2020,
    [14] Mon, 15 Jun 2020,
    [15] Tue, 16 Jun 2020,
    [16] Wed, 17 Jun 2020,
    [17] Thu, 18 Jun 2020,
    [18] Fri, 19 Jun 2020,
    [19] Sat, 20 Jun 2020
]

显然结果数组中的最后一个元素是 ending_date.