びくでん家主2号・アーの日記。
たいしたことを書くとは思われない。(なんだかなー。)
アルフィーファンサイトなのにTHE ALFEEネタは少ないかも。(…。)

 

2002年12月09日(月)

寒いんで超インドアな話。

関東では雪らしいですけど、
九州もそれなりに寒いです。…雪は降ってないけどね。
ホットカーペットが温いと感じないよ~ん。(泣)

こんな日に、仕事から帰って何をしてたかというと。
…CGIいじってました。
あぁ、究極のインドア。
ちなみに亭主は寝てました。
こちらもインドア。
ま、こんなことができるのも今のうち、今のうち。

インドアついでに、CGIの話を。
(読み流してくださいね~。)

CGI、実は、カレンダーのプログラムで、予定を書き込めるという物です。
で、ベースのプログラムでは祝日の自動処理がないんですけど、
これをある程度自動でやったれ!と思っているんですけど、
日本の祝日、なかなか難しく、悩んでいるんですね…。うーん。
(実は数日前の祝日調査もこのCGIのせい。)

春分とか秋分とか難しすぎ。
計算式、ネットに出ていたんだけど、イマイチ理解できず。
それそのまんまCGIに流用すると、確かに計算できているんだけど。
しかし、これ、そのうち、地球に隕石でも落っこって、
地軸の向きが変わるとか自転速度が変わると、
計算式も自ずと変わるんだな、きっと。
(サード・インパクト?それじゃあ某アニメ。)
あ、太陽が膨張するっていうのもアリか?
(注:これ以上太陽が膨張すると人間は死滅するらしいので、
   カレンダーがどうの、祝日がどうの言っている場合ではない。)

振替休日とかもそれなりに出来ましたが、
(祝日が日曜日の場合フラグを立て、翌月曜日にフラグの有無で振休判別。)
問題は国民の休日。
定義:国民の休日は祝日と祝日の間の平日を休みにする物。
例1:5/3が土曜日、5/5が月曜日の場合は5/4は単なる日曜日。
   国民の休日ではない
例2:5/3が日曜日、5/5が火曜日の場合は5/4は振替休日。
   国民の休日ではない
例3:5/3が金曜日、5/5が日曜日の場合は5/4は国民の休日。
   ちなみに、5/6は5/5の振替休日で休み。
例4:5/3が月曜日、5/5が水曜日の場合は5/4は国民の休日。
   ちなみに、5/2は日曜日で休み。
5月の国民の休日はこういう按配で楽勝。
つまり、5/4が日・月の場合は国民の休日はないということね。
そういう処理にしてやろう!と考えた矢先。
来年以降、9月にも国民の休日ができる可能性アリ
しかもこっちはやっかいです。

来年以降、ハッピーマンデーというヤツのせいで、海の日は7月第3月曜に、
敬老の日は9月第3月曜になります。
第3月曜日というモンの定義:15~21日の間の月曜日。
(ちなみに、既に2000年から、成人の日は1月第2月曜に、体育の日は10月第2月曜になっています。
 体育の日、10/10以外にしちゃったらあまり意味がないと思うんだがなぁ。
 何しろ、10/10は「晴の特異日」だから東京オリンピックの開会式の日で、
 それで「体育の日」になった筈なんだけどなぁ…。)
また、9月には秋分の日もありますが、これ、日付が毎年一定ではありません。
ちなみに秋分の日は大体9/23ごろ。(22~24日で変動。)
で、2009年の第3月曜日(=敬老の日)は9/21、
この年の秋分の日は9/23水曜日。
祝日と祝日に挟まれた日は国民の休日になります、ということで、
現行法では2009年9月22日は国民の休日に。
9/20は日曜だし、土曜が休みの人には9/19も休みなので、
そういう人にとっては最大5連休になるわけですよ。
こりゃめでたい!ブラボー!

…でも、プログラム上はどうすればいいやら…。トホホ。
祝日同士の差が2日で、挟まれた日が日曜・月曜以外ならば
国民の休日にしてやればいいというのは分かりますが、
これ、頭っから処理していくCGIでどう表現してよいやら…。
頂いたCGIは、月の頭から1日分ずつを計算するタイプなので、
さかのぼる処理は無理だと考えられ。

…やっぱり配列かのう…。(凹;;)
配列に1日分ずつの結果を突っ込んで、
その月の処理が全部済んでから吐き出すのが一番良さげ。
しかしそうなるとプログラムが原型を留めなくなっちゃうなぁ…。さて。