计算两个日期之间的特定工作日

时间:2018-11-10 10:56:59

标签: python python-3.x python-2.7

我正在尝试制作一个python程序,该程序将计算从过去某天到今天的第7个星期一。

这是我到目前为止所拥有的。

from datetime import date


def num_day(past_Date):

    # this is the total number of specific date between the years
    sum(date(year, month, 7).weekday() == 0 
    for year in range(past_Date.year, date.today().year + 1) for month in range(1, 13))

现在这是我的问题

让我们说past_date是date(1945,11,6),今天是date(2018,11,6)

我该如何减去/添加实际日期范围之间不存在的星期一多余的/多余的计数?

这个难题困扰了我好几个小时,我似乎找不到出路。

1 个答案:

答案 0 :(得分:1)

我认为更好的方法是从past_date迭代到今天,同时将所有匹配项保存在列表中。这是我的方法

from datetime import date
from datetime import timedelta

def num_day(past_date, my_day, my_weekday):
    dates = []
    while past_date <= date.today():
        if past_date.weekday() == my_weekday and past_date.day == my_day:
            dates.append(past_date)
        past_date = past_date + timedelta(days=1)
    return dates

def main():
    dates = num_day(past_date = date(1945, 11, 6), my_day = 7, my_weekday = 0)
    print(dates)

if __name__ == '__main__':
    main()

请记住,my_weekday必须介于0到6之间。否则,请使用date.isoweekday()而不是date.weekday()