class JPDate::Holiday
日本の太陽暦の始まり¶ ↑
明治5年11月9日・1872年12月9日施行 太政官布告第337号 改暦ノ布告
「今般太陰曆ヲ廢シ太陽曆御頒行相成候ニ付來ル12月3日ヲ以テ明治6年1月1日ト被定候事」 太陰暦 太陽暦 西暦 明治5年12月 2日 1872年12月31日 太陰暦ここまで 明治5年12月 3日 明治6年 1月 1日 1873年 1月 1日 太陽暦ここから
JPDate::Holidayクラスは、太陽暦 明治6年・1873年1月1日以降の日本の祝日を扱う
以下の法律に準拠する¶ ↑
-
五節ヲ廃シ祝日ヲ定ム
-
年中祭日祝日ノ休暇日ヲ定ム
-
休日ニ關スル件
-
国民の祝日に関する法律
Constants
- HOLIDAYS
祝日情報テーブル
- NATIONAL_HOLIDAY_START
昭和60年 1985年12月27日公布・施行 法律第103号 国民の祝日に関する法律(改正) 国民の休日の開始日付
- SUBSTITUTE_HOLIDAY_START
昭和48年 1973年 4月12日公布・施行 法律第 10号 国民の祝日に関する法律(改正) 振替休日の開始日付
Public Class Methods
list(range)
click to toggle source
指定した期間の祝日のハッシュを返す
Example:¶ ↑
JPDate::Holiday.list(2015) # => {#<Date: 2015-01-01 ((2457024j,0s,0n),+0s,2299161j)>=>"元旦", #<Date: 2015-01-12 ((2457035j,0s,0n),+0s,2299161j)>=>"成人の日", #<Date: 2015-02-11 ((2457065j,0s,0n),+0s,2299161j)>=>"建国記念日", #<Date: 2015-03-21 ((2457103j,0s,0n),+0s,2299161j)>=>"春分の日", #<Date: 2015-04-29 ((2457142j,0s,0n),+0s,2299161j)>=>"昭和の日", #<Date: 2015-05-03 ((2457146j,0s,0n),+0s,2299161j)>=>"憲法記念日", #<Date: 2015-05-04 ((2457147j,0s,0n),+0s,2299161j)>=>"みどりの日", #<Date: 2015-05-05 ((2457148j,0s,0n),+0s,2299161j)>=>"こどもの日", #<Date: 2015-05-06 ((2457149j,0s,0n),+0s,2299161j)>=>"振替休日", #<Date: 2015-07-20 ((2457224j,0s,0n),+0s,2299161j)>=>"海の日", #<Date: 2015-09-21 ((2457287j,0s,0n),+0s,2299161j)>=>"敬老の日", #<Date: 2015-09-22 ((2457288j,0s,0n),+0s,2299161j)>=>"国民の休日", #<Date: 2015-09-23 ((2457289j,0s,0n),+0s,2299161j)>=>"秋分の日", #<Date: 2015-10-12 ((2457308j,0s,0n),+0s,2299161j)>=>"体育の日", #<Date: 2015-11-03 ((2457330j,0s,0n),+0s,2299161j)>=>"文化の日", #<Date: 2015-11-23 ((2457350j,0s,0n),+0s,2299161j)>=>"勤労感謝の日", #<Date: 2015-12-23 ((2457380j,0s,0n),+0s,2299161j)>=>"天皇誕生日"} JPDate::Holiday.list(1989..2014) # => ...中略...
# File lib/jpdate/holiday.rb, line 154 def self.list(range) range = range..range if range.class == Integer range.each {|y| new(y) unless @@years.include?(y)} Hash[@@holidays.sort].select {|k, v| range.include?(k.year)} end
name(date)
click to toggle source
Private Instance Methods
add_national_holiday(dates)
click to toggle source
国民の休日を追加
# File lib/jpdate/holiday.rb, line 189 def add_national_holiday(dates) dates.each_cons(2) do |a, b| if b - a == 2 && (a + 1).wday != 0 && !@@holidays[a + 1] && a + 1 >= NATIONAL_HOLIDAY_START @holidays[a + 1] = '国民の休日' end end end
add_substitute_holiday(dates)
click to toggle source
振替休日を追加
# File lib/jpdate/holiday.rb, line 179 def add_substitute_holiday(dates) dates.each do |date| if date.wday == 0 && date >= SUBSTITUTE_HOLIDAY_START date += 1 while @holidays[date] @holidays[date] = '振替休日' end end end
equinox_day(y, m)
click to toggle source
春分・秋分の日付を返す
# File lib/jpdate/holiday.rb, line 209 def equinox_day(y, m) case y when 1851..1899 dy = y - 1980 return Date.new(y, m, (19.8277 + 0.242194*dy - dy/4).to_i) if m == 3 return Date.new(y, m, (22.2588 + 0.242194*dy - dy/4).to_i) if m == 9 when 1900..2099 dy = y - 1900 return Date.new(y, m, (21.4471 + 0.242377*dy - dy/4).to_i) if m == 3 return Date.new(y, m, (23.8896 + 0.242032*dy - dy/4).to_i) if m == 9 when 2100..2150 dy = y - 1980 return Date.new(y, m, (21.8510 + 0.242194*dy - dy/4).to_i) if m == 3 return Date.new(y, m, (24.2488 + 0.242194*dy - dy/4).to_i) if m == 9 end end
Also aliased as: spring_day, autumn_day
monday(n, y, m)
click to toggle source
# File lib/jpdate/holiday.rb, line 197 def monday(n, y, m) nth_week_day(y, m, n.to_i, 1) end
nth_week_day(y, m, n, w)
click to toggle source
y年m月の第n w曜日の日付を返す
Sun Mon Tue Wed Thu Fri Sat
w: 0 1 2 3 4 5 6 以下2014年10月第2月曜日の場合 nth_week_day
(2014, 10, 2, 1)
# File lib/jpdate/holiday.rb, line 204 def nth_week_day(y, m, n, w) Date.new(y, m, 7 * n - (Date.new(y, m) - w - 1).wday) end