LoginSignup
9
14

More than 5 years have passed since last update.

pythonで一年間の休日判定をしてみた

Last updated at Posted at 2017-12-03

背景

python3で一年間の休日判定を行ってみた。
特定年度の休日をYYYY-MM-DD形式で出力する

手法

①内閣府のcsvデータをダウンロードして祝日の判定データとする。
②一年間の日付データを回す
③データの曜日判定(土日)をする
④①を使いデータの祝日判定をする
⑤年末年始など会社特有の休日判定をする

 コード

import datetime
import pandas
import urllib

public_holiday_csv_url="http://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
file_name = public_holiday_csv_url.split("/")[-1]

# 対象年度
target_year = 2018

# 会社特有の休日
company_holiday = ['2018-01-02','2018-01-03','2018-12-28','2018-12-31']


def get_holiday_flg(date):
    # 通常の土日
    if (date.weekday() >= 5):
        return True

    # 祝日
    holidays_df = pandas.read_table(file_name, delimiter=',', encoding="SHIFT-JIS")
    if date.strftime("%Y-%m-%d") in holidays_df['国民の祝日月日'].tolist():
        return True

    # 会社の休日
    if date.strftime("%Y-%m-%d") in company_holiday:
        return True

    return False


if __name__ == '__main__':

    # 内閣府から祝日データを取得、更新したいときにTrueにしてね
    if True:
        urllib.request.urlretrieve(public_holiday_csv_url, file_name)

    # 年始から日付を回す
    date = datetime.datetime(target_year, 1, 1, 0, 0)
    while date.year == target_year:
        if get_holiday_flg(date):
            print(date.strftime("%Y-%m-%d"))
        date += datetime.timedelta(days=1)

pip install pandas
でpandasをインストールしておく

改良の余地はありそうだけど、こんな感じで簡単にできた

2017/12/04追記

あ、振替休日考慮できてない

参考

参考にいたしました。ありがとうございます。

Pythonで営業日を取得
http://cartman0.hatenablog.com/entry/2017/05/25/195818

9
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14