2016-11-08 103 views
-1

我必須在給定的第一個日期得到相同的工作日,並且持續時間介於第一個日期和第二個日期之間。第一個日期是日期(2011,01,11)第二個日期是今天。 from datetime import date """ (date(2011, 10, 15)) """ samewkdays=date.weekday() print(samewkdays) #5 輸出必須是當月和星期幾與第一個日期相同的日期。由於我很少知道日期時間功能,我甚至無法從這裏進一步思考。我會深深地感謝你的任何建議,幫助我!python3.2)如何在兩個日期之間找到工作日?

回答

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) 
相關問題