0.11
No release in over 3 years
Low commit activity in last 3 years
Calculate National Holidays of Japan after 1948
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

日本の祝日判定Rubyプログラム

(GitHub), (RubyGems)

特徴

  • 1948年7月20日以降の日本の国民の祝日、振替休日、および国民の休日を計算して判定。
  • スクリプトコード(holiday_japan.rb)は、祝日データを含めて200行弱とコンパクト。

(date2 の holiday.rb と比較して)

  • 祝日をキャッシュすることにより、大量の日付について祝日判定する場合でも高速に動作
  • 祝日名を返すことが可能
  • 祝日のルールをテーブルで持つことにより、法改正による祝日変更への対応が容易

(holiday_jp と比較して)

  • holiday_jp は日付をキーとする祝日データセットに基く。holiday_japan は祝日ルールに基き、照会された年ごとにデータセットを生成する。

インストール

  • RubyGems によるインストール

    gem install holiday_japan
    
  • または、holiday_japan.rb のスクリプトファイルを ruby のライブラリパスに置く

使い方

モジュールをロード

require 'holiday_japan'

HolidayJapan モジュール関数

  • check(date) ― Dateクラスのオブジェクトによる祝日判定

    HolidayJapan.check(Date.new(2022,3,21))
    => true
  • name(date) ― 日付が祝日の場合は祝日名を返し、祝日でなければ nil を返す。

    HolidayJapan.name(Date.new(2022,3,21))
    => "春分の日"
  • print_year(year) ― ある年の祝日一覧をプリント

    $ ruby -r holiday_japan -e 'HolidayJapan.print_year 2022'
    listing year 2022...
    2022-01-01 Sat 元日
    2022-01-10 Mon 成人の日
    2022-02-11 Fri 建国記念の日
    2022-02-23 Wed 天皇誕生日
    2022-03-21 Mon 春分の日
    2022-04-29 Fri 昭和の日
    2022-05-03 Tue 憲法記念日
    2022-05-04 Wed みどりの日
    2022-05-05 Thu こどもの日
    2022-07-18 Mon 海の日
    2022-08-11 Thu 山の日
    2022-09-19 Mon 敬老の日
    2022-09-23 Fri 秋分の日
    2022-10-10 Mon スポーツの日
    2022-11-03 Thu 文化の日
    2022-11-23 Wed 勤労感謝の日
    
  • list_year(year) ― ある年について、 [日付, 祝日名] のArrayを返す

    HolidayJapan.list_year(2022)
    => [[#<Date: 2022-01-01 ((2459581j,0s,0n),+0s,2299161j)>, "元日"],
        [#<Date: 2022-01-10 ((2459590j,0s,0n),+0s,2299161j)>, "成人の日"],
        [#<Date: 2022-02-11 ((2459622j,0s,0n),+0s,2299161j)>, "建国記念の日"],
        [#<Date: 2022-02-23 ((2459634j,0s,0n),+0s,2299161j)>, "天皇誕生日"],
        [#<Date: 2022-03-21 ((2459660j,0s,0n),+0s,2299161j)>, "春分の日"],
        [#<Date: 2022-04-29 ((2459699j,0s,0n),+0s,2299161j)>, "昭和の日"],
        [#<Date: 2022-05-03 ((2459703j,0s,0n),+0s,2299161j)>, "憲法記念日"],
        [#<Date: 2022-05-04 ((2459704j,0s,0n),+0s,2299161j)>, "みどりの日"],
        [#<Date: 2022-05-05 ((2459705j,0s,0n),+0s,2299161j)>, "こどもの日"],
        [#<Date: 2022-07-18 ((2459779j,0s,0n),+0s,2299161j)>, "海の日"],
        [#<Date: 2022-08-11 ((2459803j,0s,0n),+0s,2299161j)>, "山の日"],
        [#<Date: 2022-09-19 ((2459842j,0s,0n),+0s,2299161j)>, "敬老の日"],
        [#<Date: 2022-09-23 ((2459846j,0s,0n),+0s,2299161j)>, "秋分の日"],
        [#<Date: 2022-10-10 ((2459863j,0s,0n),+0s,2299161j)>, "スポーツの日"],
        [#<Date: 2022-11-03 ((2459887j,0s,0n),+0s,2299161j)>, "文化の日"],
        [#<Date: 2022-11-23 ((2459907j,0s,0n),+0s,2299161j)>, "勤労感謝の日"]]
  • hash_year(year) ― ある年について、 {日付=>祝日名} のHashを返す

    HolidayJapan.hash_year(2022)
    => {#<Date: 2022-01-01 ((2459581j,0s,0n),+0s,2299161j)>=>"元日",
        #<Date: 2022-01-10 ((2459590j,0s,0n),+0s,2299161j)>=>"成人の日",
        #<Date: 2022-02-11 ((2459622j,0s,0n),+0s,2299161j)>=>"建国記念の日",
        #<Date: 2022-02-23 ((2459634j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
        #<Date: 2022-03-21 ((2459660j,0s,0n),+0s,2299161j)>=>"春分の日",
        #<Date: 2022-04-29 ((2459699j,0s,0n),+0s,2299161j)>=>"昭和の日",
        #<Date: 2022-05-03 ((2459703j,0s,0n),+0s,2299161j)>=>"憲法記念日",
        #<Date: 2022-05-04 ((2459704j,0s,0n),+0s,2299161j)>=>"みどりの日",
        #<Date: 2022-05-05 ((2459705j,0s,0n),+0s,2299161j)>=>"こどもの日",
        #<Date: 2022-07-18 ((2459779j,0s,0n),+0s,2299161j)>=>"海の日",
        #<Date: 2022-08-11 ((2459803j,0s,0n),+0s,2299161j)>=>"山の日",
        #<Date: 2022-09-19 ((2459842j,0s,0n),+0s,2299161j)>=>"敬老の日",
        #<Date: 2022-09-23 ((2459846j,0s,0n),+0s,2299161j)>=>"秋分の日",
        #<Date: 2022-10-10 ((2459863j,0s,0n),+0s,2299161j)>=>"スポーツの日",
        #<Date: 2022-11-03 ((2459887j,0s,0n),+0s,2299161j)>=>"文化の日",
        #<Date: 2022-11-23 ((2459907j,0s,0n),+0s,2299161j)>=>"勤労感謝の日"}
  • between(from_date,to_date) ― from_date から to_date までの祝日について、{日付=>祝日名}のHashを返す

    HolidayJapan.between("2022-4-1","2023-3-31")
    => {#<Date: 2022-04-29 ((2459699j,0s,0n),+0s,2299161j)>=>"昭和の日",
        #<Date: 2022-05-03 ((2459703j,0s,0n),+0s,2299161j)>=>"憲法記念日",
        #<Date: 2022-05-04 ((2459704j,0s,0n),+0s,2299161j)>=>"みどりの日",
        #<Date: 2022-05-05 ((2459705j,0s,0n),+0s,2299161j)>=>"こどもの日",
        #<Date: 2022-07-18 ((2459779j,0s,0n),+0s,2299161j)>=>"海の日",
        #<Date: 2022-08-11 ((2459803j,0s,0n),+0s,2299161j)>=>"山の日",
        #<Date: 2022-09-19 ((2459842j,0s,0n),+0s,2299161j)>=>"敬老の日",
        #<Date: 2022-09-23 ((2459846j,0s,0n),+0s,2299161j)>=>"秋分の日",
        #<Date: 2022-10-10 ((2459863j,0s,0n),+0s,2299161j)>=>"スポーツの日",
        #<Date: 2022-11-03 ((2459887j,0s,0n),+0s,2299161j)>=>"文化の日",
        #<Date: 2022-11-23 ((2459907j,0s,0n),+0s,2299161j)>=>"勤労感謝の日",
        #<Date: 2023-01-01 ((2459946j,0s,0n),+0s,2299161j)>=>"元日",
        #<Date: 2023-01-02 ((2459947j,0s,0n),+0s,2299161j)>=>"振替休日",
        #<Date: 2023-01-09 ((2459954j,0s,0n),+0s,2299161j)>=>"成人の日",
        #<Date: 2023-02-11 ((2459987j,0s,0n),+0s,2299161j)>=>"建国記念の日",
        #<Date: 2023-02-23 ((2459999j,0s,0n),+0s,2299161j)>=>"天皇誕生日",
        #<Date: 2023-03-21 ((2460025j,0s,0n),+0s,2299161j)>=>"春分の日"}

祝日データをCSVに出力

$ ruby -r csv -r holiday_japan -e 'CSV.open("holiday.csv","w"){|c| HolidayJapan.between(2021,2022).each{|a| c<<a}}'
$ head -n3 holiday.csv ; echo ...; tail -n3 holiday.csv
2021-01-01,元日
2021-01-11,成人の日
2021-02-11,建国記念の日
...
2022-10-10,スポーツの日
2022-11-03,文化の日
2022-11-23,勤労感謝の日

祝日データ

  • 1948年7月20日(祝日法発令) 以降の祝日に対応
  • 2023年の暦要項まで確認済(法改正がない限り以降も有効)
  • 春分の日・秋分の日の計算は2150年まで

Author:

Masahiro TANAKA

Copyright:

(C) Copyright 2003-2022 by Masahiro TANAKA
This program is free software under MIT license.
See LICENSE.txt.
NO WARRANTY.

Version:

2018-04-14  ver 1.4  祝日データ仕様変更、2019,2020年対応
2017-12-01  ver 1.3  print_between 関数追加
2015-04-11  ver 1.2  hash_year, between 関数追加
2014-05-23  ver 1.1  「山の日」追加
2012-12-23  ver 1.0  モジュール名を Holiday から HolidayJapan に変更
2007-08-02  ver 0.9  リファクタリング
2007-03-08  ver 0.8  祝日データクラスを統一、データを配列で記述
2006-02-06  ver 0.7  平成19年(西暦2007年)の暦要項 反映(祝日法改正)
                     Holiday.create_table 修正
                     Holiday.list_year 追加
2003-10-02  ver 0.6  祝日データ追加
2003-09-29  ver 0.5
2003-09-22  ver 0.4
2003-09-20  ver 0.3
2003-09-16  ver 0.2
2003-09-15  ver 0.1