2016-11-08 8 views
-1

最初の日付は同じ平日にする必要があり、期間は最初の日付と2番目の日付の間です。最初の日付は日付(2011、01、11)です。2番目の日付は今日です。 from datetime import date """ (date(2011, 10, 15)) """ samewkdays=date.weekday() print(samewkdays) #5 出力は、月と曜日が最初の日付と同じ日付でなければなりません。私はめったに日時関数を知っていないので、私はここからさらに考えることができません。私はあなたのアドバイスを深く感謝します、助けてください!python3.2)どのように2つの日付の間の平日を見つけるのですか?

答えて

2

私はそれがあなたが意味することを望みます。わかりやすくするためのテストも提供します。私たちがtodayに達するか、または1ヶ月になるまで反復するだけです。

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) 
関連する問題