業務上祝日か否かを判定したい事が多く、ネットで方法を調べると最近ではgoogleAPIを利用した以下のようなサイトがヒットします。
管理人も最初はgoogleAPIを利用して済まそうかと思ったのですが、
やりたい事はプログラムが起動する際に休みかどうかのチェックを行いたいだけで、もっとシンプルな方式があってもよいのでは考えました。
全てプログラムで判定する方式もネットで公開されており、個人的にはスマートと思っていますが、 今後祝日の判定が変わった場合、ロジックのメンテを考えると多分ロジック自体を思い出すのに四苦八苦しそうなので できるだけメンテが楽orフリーに近い形でのサービス提供がよいかと考え、内閣府のwebを解析して最新データを抽出するといった方式としました。
また、データの信頼性の面からも最終的には内閣府のwebを元にその範囲内でデータを作成するのが適切と考え、webAPIとして整理しました。
あわせて日本特有の官公庁の休み、東京市場(東証)の休みについても判定できるようにしました。
後、指定日の営業日の判定(休みであれば前/翌営業日)と何営業日前、何営業日後を取得できるwebAPIも公開しました。
当サイトでは利用しておりませんが、参考までに祝日判定ロジックを公開しているサイトをご紹介しておきます。
週末判定 サンプルhttps://s-proj.com/utils/checkHoliday.php?kind=we
日時判定 サンプルhttps://s-proj.com/utils/checkHoliday.php?kind=h&date=20110611
週末判定は、当日が平日でそれ以降日曜日まで平日が無い場合、その日を週末と判断します。
週はじめ、月はじめ、月末も考え方は同じです。
例えば、金曜日が祝日の場合は木曜日が週末となります。
2018年1月8日の営業日(祝日の場合は直後の営業日)を取得する場合
https://s-proj.com/utils/getBusinessDay.php?kind=next&date_format=yyyy/mm/dd&date=20180108&opt=normal
2019年7月25日の5営業日後を取得する場合
https://s-proj.com/utils/getBusinessDay.php?kind=next5&date_format=yyyy/mm/dd&date=20190725&opt=normal
国家公務員法 休日及び休暇に関する事項(総務省)
個人、商用含め自由にご利用いただけます。
ただし、データの誤り、サービスの継続性含め、いかなる理由により損害等が発生しても当サイトは一切責任をもちません。
事前連絡等は不要ですが、ご一報いただけるとAPIを変更する場合など多少融通がききます。
祝日判定webAPI
CodeIgniter + PostgreSQL
2020.5.10 負荷対策のため一部ドメインからのアクセスを制限しました
2020.5.10 サーバを移転しました
2019.7.22 前/翌営業日取得用のwebAPIにoptのオプションを指定可能に機能追加
2019.7.22 前/翌営業日取得用のwebAPIにx営業日後、x営業日前の日付を取得できるよう機能追加
2018.5.6 データ更新方式を変更
2018.1.10 前/翌営業日取得用のwebAPIを追加
2017.12.21 国民の祝日だけの判定用オプション(kind=ph)を追加
2017.12.8 2018年の祝日判定でエラーになっていたため対応
2011.12.13 一部制限について追記
2011.6.15 株式市場、官公庁用optパラメータ追加
2011.6.14 パラメータ追加
2011.6.6 サイトアップ
- http://ay-sys.com/page.php/memo_gcalendar
- http://d.hatena.ne.jp/perlcodesample/20081011/1223782559
- http://0-oo.net/sbox/javascript/google-calendar-holidays
- http://fdays.blogspot.com/2008/04/google-calendar-gdatakeygdata.html
管理人も最初はgoogleAPIを利用して済まそうかと思ったのですが、
やりたい事はプログラムが起動する際に休みかどうかのチェックを行いたいだけで、もっとシンプルな方式があってもよいのでは考えました。
全てプログラムで判定する方式もネットで公開されており、個人的にはスマートと思っていますが、 今後祝日の判定が変わった場合、ロジックのメンテを考えると多分ロジック自体を思い出すのに四苦八苦しそうなので できるだけメンテが楽orフリーに近い形でのサービス提供がよいかと考え、内閣府のwebを解析して最新データを抽出するといった方式としました。
また、データの信頼性の面からも最終的には内閣府のwebを元にその範囲内でデータを作成するのが適切と考え、webAPIとして整理しました。
あわせて日本特有の官公庁の休み、東京市場(東証)の休みについても判定できるようにしました。
後、指定日の営業日の判定(休みであれば前/翌営業日)と何営業日前、何営業日後を取得できるwebAPIも公開しました。
当サイトでは利用しておりませんが、参考までに祝日判定ロジックを公開しているサイトをご紹介しておきます。
利用方法
当日が祝日か否か判定したい場合
アクセス先URL
https://s-proj.com/utils/checkHoliday.phpパラメータ
パラメータ | 説明 |
---|---|
opt |
gov : 官公庁(12/29-1/3が休み) market : 株式市場(12/31-1/3が休み)※東証 normal : 国民の祝日に関する法律に基づく休み 未指定時は normal |
kind |
h : 土、日、祝日(振替休日含む)か否かの判定[holiday] ph : 祝日か否かの判定[public holiday] ws : 週はじめか否かの判定 we : 週末か否かの判定 ms : 月はじめか否かの判定 me : 月末か否かの判定 未指定時は h |
date | yyyymmdd 判定したい年月日(2000年以降来年まで) 未指定時は当日 |
週末判定 サンプルhttps://s-proj.com/utils/checkHoliday.php?kind=we
日時判定 サンプルhttps://s-proj.com/utils/checkHoliday.php?kind=h&date=20110611
返却値
返却値 | |
---|---|
kind=hの場合 | holiday : 土、日、祝日(振替休日含む) else : その他 error : システムエラー |
kind=phの場合 | holiday : 祝日 else : その他(祝日でない土日及び振替休日はelseが返却されます) error : システムエラー |
kind=wsの場合 | weekstart : 週はじめ else : その他 error : システムエラー |
kind=weの場合 | weekend : 週末 else : その他 error : システムエラー |
kind=msの場合 | monthstart : 月はじめ else : その他 error : システムエラー |
kind=meの場合 | monthend : 月末 else : その他 error : システムエラー |
週はじめ、月はじめ、月末も考え方は同じです。
例えば、金曜日が祝日の場合は木曜日が週末となります。
アクセスするphpのサンプル
$url = 'https://s-proj.com/utils/checkHoliday.php'; // ファイルをオープンして既存のコンテンツを取得します $holiday_status = file_get_contents($url); if($holiday_status=="holiday"){ print "holiday"; }else if($holiday_status=="else"){ print "else"; }else{ print "error"; }
営業日の取得
アクセス先URL
https://s-proj.com/utils/getBusinessDay.phpパラメータ
パラメータ | 説明 |
---|---|
kind |
next : 指定日が営業日でなければ、直後の営業日を取得 prev : 指定日が営業日でなければ、直前の営業日を取得 next{半角数字} : x営業日後の日付を取得 例 5営業日後 → next5 prev{半角数字} : x営業日前の日付を取得 例 10営業日前 → prev10 ※x営業日前、x営業日後の場合指定日は含まれません。 未指定時は next |
date | yyyymmdd 判定したい年月日(2000年以降来年まで) 未指定時は当日 |
date_format |
出力日の形式 yyyy/mm/dd yyyy-mm-dd yyyymmdd 未指定時は yyyymmdd |
opt |
gov : 官公庁(12/29-1/3が休み) market : 株式市場(12/31-1/3が休み)※東証 normal : 国民の祝日に関する法律に基づく休み 未指定時は normal |
2018年1月8日の営業日(祝日の場合は直後の営業日)を取得する場合
https://s-proj.com/utils/getBusinessDay.php?kind=next&date_format=yyyy/mm/dd&date=20180108&opt=normal
2019年7月25日の5営業日後を取得する場合
https://s-proj.com/utils/getBusinessDay.php?kind=next5&date_format=yyyy/mm/dd&date=20190725&opt=normal
返却値
返却値 | |
---|---|
該当する営業日(date_formatで指定した形式) ex. 20180109 | 対象日が無い場合は no date |
データの対応範囲
2000年~内閣府に掲載されている年までデータソース
国民の祝日について(内閣府)国家公務員法 休日及び休暇に関する事項(総務省)
更新頻度
一日一回文字コード
utf-8著作権等
MITライセンス個人、商用含め自由にご利用いただけます。
ただし、データの誤り、サービスの継続性含め、いかなる理由により損害等が発生しても当サイトは一切責任をもちません。
データについて
2010年以降のデータについては内閣府のデータから作成(予定)しておりますが、2000-2009年のデータについては調査により作成したデータとなります。お問合わせ、ご質問等
問い合わせフォーム事前連絡等は不要ですが、ご一報いただけるとAPIを変更する場合など多少融通がききます。
その他のサイト
Top祝日判定webAPI
CodeIgniter + PostgreSQL
ページ更新日
2021.12.23 サイトのHTTPS化にともないURL(http://→https://)が変更になりました。2020.5.10 負荷対策のため一部ドメインからのアクセスを制限しました
2020.5.10 サーバを移転しました
2019.7.22 前/翌営業日取得用のwebAPIにoptのオプションを指定可能に機能追加
2019.7.22 前/翌営業日取得用のwebAPIにx営業日後、x営業日前の日付を取得できるよう機能追加
2018.5.6 データ更新方式を変更
2018.1.10 前/翌営業日取得用のwebAPIを追加
2017.12.21 国民の祝日だけの判定用オプション(kind=ph)を追加
2017.12.8 2018年の祝日判定でエラーになっていたため対応
2011.12.13 一部制限について追記
2011.6.15 株式市場、官公庁用optパラメータ追加
2011.6.14 パラメータ追加
2011.6.6 サイトアップ