Cucco’s Compute Hack

コンピュータ関係の記事を書いていきます。

月の第n曜日とか、月の最終曜日かどうかの判定

その月の第n曜日の計算と、月の最終曜日の判定関数。
指定の日付に対して、第N曜日の計算は単純に日付だけ。
逆に最終曜日の判定はちょっと面倒。

コード

import datetime

def nth_weekday(target_date : datetime.date):

    target_date_day=target_date.day
    if target_date_day <=7:
        return 1
    elif target_date_day <=14:
        return 2
    elif target_date_day <=21:
        return 3
    elif target_date_day <=28:
        return 4
    else:
        return 5

def is_last_weekday(target_date : datetime.date):
    this_month=target_date.month
    tmp_date = target_date + datetime.timedelta(days=7)
    tmp_month = tmp_date.month

    if this_month != tmp_month:
        return True
    else:
        return False

target_date=datetime.date(2021,1,1)
datetime.timedelta(days=1)

for i in range(366):
    print(target_date,nth_weekday(target_date),is_last_weekday(target_date))
    target_date= target_date+ datetime.timedelta(days=1)