#author("2022-11-23T09:48:58+09:00","default:yakumo_murakami","yakumo_murakami")
#author("2022-11-23T09:49:21+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]

実行すると、未来10日間、または10回先までの休日を表示するようにしてみたわ。~
使ったライブラリは以下。

- sys コマンドライン引数
- datetime 日時処理
- jpholiday 日本の祝日

なお、jpholiday は pip インストールの必要があると思う。

 #!/usr/bin/python3 
 
 import datetime
 import jpholiday
 import sys
 
 class Hol():
    def __init__(self):
        self.today = datetime.datetime.now()
        self.yos = ["月","火","水","木","金","土","日"]
        self.kyou(self.today)
 
    def kyou(self,today):
        self.holiday_name = jpholiday.is_holiday_name(self.today)
        self.yobi = self.yos[self.today.weekday()]
        self.kf = False
        if(self.holiday_name != None) :
            self.kd = self.holiday_name
            self.kf = True
        elif(self.yobi == "土" or self.yobi == "日"):
            self.kd = self.yobi + "曜日"
            self.kf = True
        else:
            self.kd = "平日(" + self.yobi + "曜日)"
 
    def day(self,y,m,d):
        self.today = datetime.datetime(y,m,d)
        self.holiday_name = self.kyou(self.today)
 
 #
 k_only = False
 d99 = 10
 args = sys.argv
 for i in range(len(args)):
    if(args[i] == "-k"):
        k_only = True

 
 t_d = Hol()
 h_name = t_d.holiday_name
 
 d2 = 0
 while d2 < d99:
    h_name = t_d.kd
    if(t_d.kf == True or k_only == False):
        kky = "今日"
        if(d2 > 0):
            kky = str(t_d.today.year)+"年"+str(t_d.today.month)+"月"+str(t_d.today.day)+"日"
        kky = kky + "は、"
        if(h_name != None):
            print(kky+h_name+"です。")
        elif(k_only == False):
            print(kky+"平日です。")
 
    # 休日フラグがオフ、またはガチの休日なら加算する。
    if(k_only == False or t_d.kf == True):
        d2 = d2 + 1
    # 日データを一日進める。
    t_d.today = t_d.today + datetime.timedelta(days=1)
    t_d.kyou(t_d.today)

実行結果は以下の通り。

* 引数なし [#m7589901]

 $ holiday.py
 今日は、勤労感謝の日です。
 2022年11月24日は、平日(木曜日)です。
 2022年11月25日は、平日(金曜日)です。
 2022年11月26日は、土曜日です。
 2022年11月27日は、日曜日です。
 2022年11月28日は、平日(月曜日)です。
 2022年11月29日は、平日(火曜日)です。
 2022年11月30日は、平日(水曜日)です。
 2022年12月1日は、平日(木曜日)です。
 2022年12月2日は、平日(金曜日)です。

* -k 指定 [#zaf03e65]

 $ holiday.py -k
 今日は、勤労感謝の日です。
 2022年11月26日は、土曜日です。
 2022年11月27日は、日曜日です。
 2022年12月3日は、土曜日です。
 2022年12月4日は、日曜日です。
 2022年12月10日は、土曜日です。
 2022年12月11日は、日曜日です。
 2022年12月17日は、土曜日です。
 2022年12月18日は、日曜日です。
 2022年12月24日は、土曜日です。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS