2010年06月22日

プログラマー泣かせの祝日・休日

業務用アプリケーションを開発していると、祝祭日を得る必要性に迫られることがあります。
・給与支給日が非営業日なら前倒しにする。
・学習開始日は営業日とする。
etc.

さて、日本には様々な祝日があります。

プログラミングが簡単なのは例えば海の日。7月 20日。
7月20日を海の日とする。
ただし、土日と重なったら、週明けの月曜日を振り替え休日とする。

ところが、年によって変動する祝日があります。これがやっかいです。

その1
体育の日を皮切りに増えてきたハッピーマンデー。
□月第△月曜日。
第△月曜日を算出する必要があります。

その2
国民の休日。
前後が祝日で、その日が祝日でなければ国民の休日とする。
他の祝日に依存して算出する必要があります。
そして、その日が土日や振り替え休日なら国民の休日にはなりません。
現在可能性があるのは、憲法記念日とこどもの日に挟まれる5月4日と、敬老の日と秋分の日に挟まれる9月21日ないし9月22日。
ここで、9月の国民の休日が変動するのは、敬老の日が「その1」に該当するハッピーマンデーの祝日であり、秋分の日も「その3」に該当する変動する祝日だからです。

その3
春分の日・秋分の日。
天文学上春分になる日、秋分になる日(平易に表現すると、太陽が真東から昇り、昼と夜の長さが等しくなる日)を基にしています。
したがって、天文学的な計算で求めればよさそうなものですが、先の文には続きがあります。
天文学上春分になる日、秋分になる日を基に、前年2月の閣議で決まる。
すなわち計算どおりにならない可能性が含まれているということです。
厄介です。

幸いにして、今のところ春分になる日、秋分になる日から外されたことはないそうですが。

おまけで笑い話です。
2009年7月の我が家のカレンダー

上の写真は我が家で購入した2009年のカレンダーの7月。
"1, 2, 1, 2, 3, 4"とリズミカルに始まっています。(はじめの"1, 2"が不要)
同僚が「うちのカレンダーおかしいんですよ。」と話すのを聞いて、自宅で話題に出しました。
「カレンダーのここがね、」と指差したところ、我が家のも同じカレンダーだったというおち。
このカレンダーは他の月も1ヶ所間違っていました。

暦のプログラミングは気をつけましょう。
カレンダーの購入にも気をつけましょう。



posted by 中田智玄 at 13:42 | Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。