我需要一种根据当前日期和已使用日期计算可用周数的方法。
我提出了不同的解决方案,但对于 Ruby,所有这些似乎都“丑陋”。我知道有更好的方法来做到这一点。
要求:
方法接受 3 个参数
start - Date, to start calculation from
amount - Integer, How many weeks do we want?
used_weeks - Array of already used weeknumbers (optional) Default: nil
假设我们通过这个方法:
calculate_available_weeks (Date.current, 5, [1,3,7])
(为简单起见,假设 Date.current 返回Sun, 01 Jan 2012)
然后该方法应返回以下几周的日期:2,4,5,6,8
这是我到目前为止所得到的:
def calculate_week_dates(start, amount, excluded_weeks = nil)
weeks = []
last_checked = start
until weeks.length == amount do
unless excluded_weeks && excluded_weeks.include?(last_checked.cweek)
weeks << last_checked
end
last_checked = last_checked.next_week
end
weeks
end