case m
when 1
return "元日" if d == 1
if y < 2000 then
return "成人の日" if d == 15
else
return "成人の日" if self.wnum == 21
end
when 2
return "建国記念の日" if y >= 1967 && d == 11
return "天皇誕生日" if y >= 2020 && d == 23
return "昭和天皇の大喪の礼" if y == 1989 && d == 24
when 3
return "春分の日" if d == vernal_equinox
when 4
return "皇太子昭仁親王の結婚の儀" if y == 1959 && d == 10
return "国民の休日" if y == 2019 && d == 30
if d == 29 then
if y < 1989 then
return "天皇誕生日"
elsif y < 2007 then
return "みどりの日"
else
return "昭和の日"
end
end
when 5
return "即位の日" if y == 2019 && d == 1
return "国民の休日" if y == 2019 && d == 2
return "憲法記念日" if d == 3
if d == 4 then
if y < 2007 then
return "国民の休日" if y >= 1986 && self.wday >= 2
else
return "みどりの日"
end
end
return "こどもの日" if d == 5
when 6
return "皇太子徳仁親王の結婚の儀" if y == 1993 && d == 9
when 7
if y < 2003 then
return "海の日" if y >= 1996 && d == 20
else
if y == 2020 then
return "海の日" if d == 23
return "スポーツの日" if d == 24
else
return "海の日" if self.wnum == 31
end
end
when 8
if y == 2020 then
return "山の日" if d == 10
else
return "山の日" if y >= 2016 && d == 11
end
when 9
return "秋分の日" if d == autumnal_equinox
if y < 2003 then
return "敬老の日" if y >= 1966 && d == 15
else
if self.wnum == 31 then
return "敬老の日"
else
return "国民の休日" if self.wday == 2 && d == autumnal_equinox - 1
end
end
when 10
return "即位礼正殿の儀" if y == 2019 && d == 22
if y < 2020 then
if y < 2000 then
return "体育の日" if y >= 1966 && d == 10
else
return "体育の日" if self.wnum == 21
end
else
return "スポーツの日" if y >= 2021 && self.wnum == 21
end
when 11
return "文化の日" if d == 3
return "即位礼正殿の儀" if y == 1990 && d == 12
return "勤労感謝の日" if d == 23
when 12
if y < 2020 then
return "天皇誕生日" if y >= 1989 && d == 23
end
end
case self.wday
when 1
return "振替休日" if self >= Time.new(1973,4,12) && (self-60*60*24).holiday
when 2, 3
return "振替休日" if y >= 2007 && m == 5 && d == 6
end
case m
when 1
return "元日" if d == 1
if y < 2000 then
return "成人の日" if d == 15
else
return "成人の日" if self.wnum == 21
end
when 2
return "建国記念の日" if y >= 1967 && d == 11
return "天皇誕生日" if y >= 2020 && d == 23
return "昭和天皇の大喪の礼" if y == 1989 && d == 24
when 3
return "春分の日" if d == vernal_equinox
when 4
return "皇太子昭仁親王の結婚の儀" if y == 1959 && d == 10
return "国民の休日" if y == 2019 && d == 30
if d == 29 then
if y < 1989 then
return "天皇誕生日"
elsif y < 2007 then
return "みどりの日"
else
return "昭和の日"
end
end
when 5
return "即位の日" if y == 2019 && d == 1
return "国民の休日" if y == 2019 && d == 2
return "憲法記念日" if d == 3
if d == 4 then
if y < 2007 then
return "国民の休日" if y >= 1986 && self.wday >= 2
else
return "みどりの日"
end
end
return "こどもの日" if d == 5
when 6
return "皇太子徳仁親王の結婚の儀" if y == 1993 && d == 9
when 7
if y < 2003 then
return "海の日" if y >= 1996 && d == 20
else
if y == 2020 then
return "海の日" if d == 23
return "スポーツの日" if d == 24
else
return "海の日" if self.wnum == 31
end
end
when 8
if y == 2020 then
return "山の日" if d == 10
else
return "山の日" if y >= 2016 && d == 11
end
when 9
return "秋分の日" if d == autumnal_equinox
if y < 2003 then
return "敬老の日" if y >= 1966 && d == 15
else
if self.wnum == 31 then
return "敬老の日"
else
return "国民の休日" if self.wday == 2 && d == autumnal_equinox - 1
end
end
when 10
return "即位礼正殿の儀" if y == 2019 && d == 22
if y < 2020 then
if y < 2000 then
return "体育の日" if y >= 1966 && d == 10
else
return "体育の日" if self.wnum == 21
end
else
return "スポーツの日" if self.wnum == 21
end
when 11
return "文化の日" if d == 3
return "即位礼正殿の儀" if y == 1990 && d == 12
return "勤労感謝の日" if d == 23
when 12
if y < 2020 then
return "天皇誕生日" if y >= 1989 && d == 23
end
end
case self.wday
when 1
return "振替休日" if self >= Time.new(1973,4,12) && (self-60*60*24).holiday
when 2, 3
return "振替休日" if y >= 2007 && m == 5 && d == 6
end