给定一个日期范围,如何计算部分或全部在该范围内的周末数?

2024-10-03 21:29:37 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个日期范围,如何计算部分或全部在该范围内的周末数?

(按要求提供一些定义: “周末”是指周六和周日。 日期范围包括在内,即结束日期是范围的一部分 “全部或部分”是指周末的任何部分在日期范围内意味着计算整个周末。)

为了简化我想你只需要知道持续时间和一周中的哪一天是最初的一天。。。

我很好,现在它将涉及做整数除以7和一些逻辑加1取决于余数,但我不能完全搞清楚。。。

Python中答案的额外点;-)

编辑

这是我最后的密码。

周末是星期五和星期六(我们正在计算入住的夜晚),从星期一开始,天数是0指数。我使用了onebyone的算法和Tom的代码布局。谢谢大家。

def calc_weekends(start_day, duration):
    days_until_weekend = [5, 4, 3, 2, 1, 1, 6]
    adjusted_duration = duration - days_until_weekend[start_day]
    if adjusted_duration < 0:
        weekends = 0
    else:
        weekends = (adjusted_duration/7)+1
    if start_day == 5 and duration % 7 == 0: #Saturday to Saturday is an exception
        weekends += 1
    return weekends

if __name__ == "__main__":
    days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    for start_day in range(0,7):
        for duration in range(1,16):
            print "%s to %s (%s days): %s weekends" % (days[start_day], days[(start_day+duration) % 7], duration, calc_weekends(start_day, duration))
        print

Tags: toinforifcalcrangedaysstart