From: Tadayoshi Funaba Date: 2003-11-03T18:24:38+09:00 Subject: [ruby-list:38743] Re: 祝日判定用メソッド http://www.h3.dion.ne.jp/~sakatsu/holiday_logic4.htm#Apollo このコードを確認しましたが、敬老の日と徳仁親王の結婚の儀の判定が間違っ ています。移植時の間違えのようで、元のコードは正しそう。 Apollo は知らないけど、確認のために、上のコードを手許で動くように適当 に直したものの差分を最後に添付します。 http://aglaia.c.u-tokyo.ac.jp/~yamamoto/Script/Calendar/ の Calendar.rb で、明仁親王結婚の儀 を 1959-03-17 としているけど、これ は施行した日だと思われる。ちなみに、僕のコードでは、この件自体が欠落し ていることが判明。近いうちに確認します。旧祝祭日についても、なにかあり そうだけど、また今度。 --- Shukujitu.rb.orig Mon Nov 3 15:50:01 2003 +++ Shukujitu.rb Mon Nov 3 17:57:42 2003 @@ -1,4 +1,4 @@ -#! ruby -Ks +#! ruby -Ke #-- Shukujitu.rb #-- Shukujitu.pi @@ -32,26 +32,26 @@ ## 2003-09-21(日):…とのことなので imported by take_tk ## -require "phi" +require 'date' module Shukujitu def self.shukujitu? date - date = Phi::DateTime.new(date) unless date.is_a? Phi::DateTime + date = Date.parse(date) unless date.is_a? Date kihon_shukujitu?(date) || hurikae_kyujitu?(date) end def self.hurikae_kyujitu? date + date = Date.parse(date) unless date.is_a? Date #? return if date.wday != 1 - return if date < "1973/4/12" - return '振替休日' if kihon_shukujitu? date.inc_day(-1) + return if date.jd < 2441785 # 1973-04-12 + return '振替休日' if kihon_shukujitu?(date - 1) return nil end def self.kihon_shukujitu? date - date = Phi::DateTime.new(date) unless date.is_a? Phi::DateTime - date = date.date - return if date < "1948/7/20" # 祝日法施行前 + date = Date.parse(date) unless date.is_a? Date + return if date.jd < 2432753 # 1948-07-20 # 祝日法施行前 year = date.year month = date.month day = date.day @@ -85,7 +85,7 @@ when 5 ; return '子供の日' end when 6 - return '皇太子徳仁親王の結婚の儀' if (day == 3) && (year == 1993) + return '皇太子徳仁親王の結婚の儀' if (day == 9) && (year == 1993) when 7 if year >= 2003 return '海の日' if ( shuu == 3) && (yobi == 1) @@ -99,7 +99,7 @@ if year >= 2003 return '敬老の日' if (yobi == 1) && (shuu == 3) return '国民の休日' if (yobi == 2) && (day == shuubun_day - 1) - elsif year >= 1996 + elsif year >= 1966 return '敬老の日' if (day == 15) end when 10 @@ -145,11 +145,8 @@ end end # of module -module Phi -class DateTime +class Date def shukujitu? Shukujitu.shukujitu?(self) end end -end -