python3.2)如何在两个日期之间找到工作日?

时间:2016-11-08 02:52:11

标签: python-3.x

我必须在第一天给出相同的工作日,并且持续时间在第一个日期和第二个日期之间。第一个日期是日期(2011年,01,11)第二个日期是今天。 from datetime import date """ (date(2011, 10, 15)) """ samewkdays=date.weekday() print(samewkdays) #5 输出必须是月份和工作日与第一个日期相同的日期。由于我很少知道日期时间功能,我甚至无法从这里进一步思考。我非常感谢你的任何建议,帮助我!

1 个答案:

答案 0 :(得分:2)

我希望你的意思是什么。我还提供了清晰的测试。我只是迭代,直到我们达到today或切换一个月。

from datetime import timedelta
from datetime import date

def get_month_dates_with_same_weekday(dt, dt_end=None):
    mon = dt.month
    rv = []
    dt_end = date.today() if dt_end is None else dt_end
    while dt.month == mon and dt <= dt_end:
        rv.append(dt)
        dt = dt + timedelta(days=7)
    return rv


def check(dt1, dt2):
    assert dt1.weekday() == dt.weekday()
    assert dt1.month == dt.month


if __name__ == '__main__':
    dt1 = date(2011, 10, 15)
    rv = get_month_dates_with_same_weekday(dt1)
    for dt in rv:
        check(dt, dt1)
    dt2 = date(2011, 10, 1)
    for dt in get_month_dates_with_same_weekday(dt2):
        check(dt, dt2)

    rv = get_month_dates_with_same_weekday(dt2, date(2011, 10, 2)) 
    assert len(rv) == 1 and rv[0] == dt2

    rv = get_month_dates_with_same_weekday(dt2, date(2011, 10, 9)) 
    assert len(rv) == 2 and rv[0] == dt2 and rv[1] == date(2011, 10, 8)