#author("2023-05-25T14:47:35+09:00","default:yakumo_murakami","yakumo_murakami")
#author("2023-05-25T14:48:40+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]

Pythonのライブラリ「jpholiday」を使うと祝日を判定できるけど、土日と、それからカスタムで追加したい日付には対応してないわよね。

対処方法は色々あるけど、まずは無難のところから。
対処方法は色々あるけど、まずは無難なところから。

オブジェクトについては、八割くらいは前やった休日判定の流用なので、少し無駄なところもあると思うわ。

* コード [#q752209c]

 import datetime
 import jpholiday
 import os
  
 class Hol():
    def __init__(self,today):
        self.today = today
        self.yos = ["月","火","水","木","金","土","日"]
        #self.handan(self.today)
        self.holiday = None
        self.answer = 0
        self.days()
    def handan(self,today):
        self.name = jpholiday.is_holiday_name(today)
        if(self.name != None):
            self.holiday = self.name
        elif(self.holiday9(self.today) != None):
            self.holiday = "XHOLIDAY"
        else:
            self.yobi = self.yos[self.today.weekday()]
            self.name = self.yobi + "曜日"
            if(self.today.weekday() > 4):
                self.holiday = self.name
    def days(self):
        self.answer = 0
        if(jpholiday.is_holiday_name(self.today) == None):
            if(self.holiday9(self.today) == None):
                while 1:
                    self.answer = self.answer + 1
                    self.today = self.today + datetime.timedelta(days=1)
                    self.handan(self.today)
                    if(self.holiday != None):
                        break
    def holiday9(self,today):
        re1 = None
        csv_holiday = os.environ["HOME"] + "/bin/holiday_all.csv"
        s = ""
        now = today.strftime("%Y%m%d\n") # rstrip()が本道だが処理時間が長いので
        with open(csv_holiday) as f:
            for s_line in f:
                if(now == s_line):
                    re1 = "HOLIDAY"
                    break
        return(re1)
 
 print(Hol(datetime.datetime.now()).answer)


これを実行すると、お休みまであと何日かと数字で返す……と思うわ。まだデバッグ中だけどね☆

* 内容の説明 [#na36a296]

オブジェクトを作ると、.answerに休日までの日数が入るの。
判定材料はjphlidayの出力、土日かどうか、そして ユーザホーム/bin/holiday_all.csv ってファイルに YYYY/mm/dd 形式で日付を並べておくと追加の判定材料にするわ。

あとは好きにしてね。

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