calendar.holidayの間違い

多分、よく知ってる人ならば「なんでわざわざ上のようなスクリプトを書くの?」と思うだろう。
実際、本来ならこういうのはターミナルからcalendarで表示させれば早いし、OSXでもちゃんと祝日用のデータとしてcalendar.holidayが準備してある。
(calendar -f calendar.holiday -W 365 | grep Japan
 または grep Japan /usr/share/calendar/calendar.holiday)

でもどうもこれに誤りがあるようで正しい日付が返らないのだが。

  1. 敬老の日が09/MonSecond→MonThirdでは?
  2. 春分秋分で確定日までが出ない。しかも3/20or21, 9/22or23に固定→実際はそれぞれ4日ほどの幅が出うるそうな…つってもここ十年はなさそうだが
  3. 5/4が国民の休日に固定→曜日によって呼び名が変わる
  4. 他の国民の休日(2009/9/22など)に対応してない

#むしろ2,3,4は日本の祝日の制度の方が問題なんだけどさ。
それで今回は自作した、と。そういう運びです。

祝日の扱いはPerlRubyのカレンダー系のスクリプトも結構苦労してるみたいで、やっぱりというか、年ごとのデータを平打ちしてる人の方が多いです。まぁ、今回のはその元データ(祝日予定日)を算出するためのコードということで、一つ。