[#38724] 祝日判定用メソッド — Take_tk <ggb03124@...>

たけ(tk)です

19 messages 2003/11/02

[#38756] ruby-dev summary 21730-21822 /draft — Minero Aoki <aamine@...>

青木です。

14 messages 2003/11/05

[ruby-list:38743] Re: 祝日判定用メソッド

From: Tadayoshi Funaba <tadf@...5.so-net.ne.jp>
Date: 2003-11-03 09:24:38 UTC
List: ruby-list #38743
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
-



In This Thread