実行すると、未来10日間、または10回先までの休日を表示するようにしてみたわ。
使ったライブラリは以下。
なお、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)
実行結果は以下の通り。
$ 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日は、平日(金曜日)です。
$ 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日は、土曜日です。