はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

Pythonで営業日を取得

Pythonで営業日を取得

Pythonで営業日を取得するメモ.

環境

  • Windows10

営業日を取得

workdyasモジュールがあるので,pipからインストールする.

pip install workdays

pypi.python.org

指定期間の営業日日数を取得

workdays.networkdays(start_date, end_date)関数を使う.

2017年5月1日(月)から31日までの土日を除いた日数を計算する.

import datetime
import workdays
start_date = datetime.datetime(2017, 5, 1)
end_date = datetime.datetime(2017,5,31)

workdays.networkdays(start_date, end_date)
> 23

d日後の営業日を取得

workdays.workday(start_date, days=d)関数を使う.

2017年5月1日(月)から5営業日後の日付を取得してみる(5月8日(月)を取得).

import datetime
import workdays

start_date = datetime.datetime(2017,5,1)
workdays.workday(start_date, days=5)
> datetime.datetime(2017, 5, 8, 0, 0)

内包表記を使って5日間を取得. 土日を除いた2, 3,4,5,8日が取得できる. 注意として,「憲法記念日」,「みどりの日」や「こどもの日」などの祝日は除外されない.

[workdays.workday(start_date, days=d) for d in range(1, 5+1)]

  > [datetime.datetime(2017, 5, 2, 0, 0), datetime.datetime(2017, 5, 3, 0, 0), datetime.datetime(2017, 5, 4, 0, 0), datetime.datetime(2017, 5, 5, 0, 0), datetime.datetime(2017, 5, 8, 0, 0)]

holidaysオプションに祝日のdatetime.datetime型のリストを設定することで祝日を除外した営業日を取得できる.

祝日情報を取得

まず,祝日情報を取得する必要がある. 今回は,内閣府の祝日csvから取得する. 詳細は以下にある.

cartman0.hatenablog.com

祝日を除いた営業日を取得

注意として,holidaysにしている祝日情報は, datetime.datetime型のリストにしておく必要がある.

同様にして,2017年5月1日から5営業日間を取得する. 今回は,3日「憲法記念日」,4日「みどりの日」,5日「こどもの日」の祝日と土曜日7日,日曜日8日が除外されて,5営業日を取得できる.

# 祝日情報(datetime.datetime型のリスト)を取得
holidays = nbstockutils.date.get_holidays_datetime()
[workdays.workday(start_date, days=d, holidays=holidays)  for d in range(1, 5 + 1)]

> [datetime.datetime(2017, 5, 2, 0, 0),
 datetime.datetime(2017, 5, 8, 0, 0),
 datetime.datetime(2017, 5, 9, 0, 0),
 datetime.datetime(2017, 5, 10, 0, 0),
 datetime.datetime(2017, 5, 11, 0, 0)]