カレンダー機能が必要なアプリケーションを作ったことがあるだろうか。
最近のプログラミング言語は、年月日から曜日を取り出す手段が用意されているので、
カレンダーを作るのも随分と楽になった。
だが、祝祭日を表示するとなると、話が途端にややこしくなる。
9月は、秋分の日と敬老の日という2つの祝日がある。 これらは移動祝日のため、計算で簡単に求められるものではない。
秋分の日
秋分の日の定義は「太陽が秋分点を通過する日」であるから、
天文計算に少し詳しい方なら簡単に算出できる。
ここでは、
「新こよみの便利帳」
(恒星社厚生閣刊)の計算式をJavaScriptで実装したプログラムを紹介する。
1980年から2099年までの毎年の秋分の日を表示するプログラムである。
0001: <?xml version="1.0" encoding="Shift_JIS" ?>
0002: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
0003: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0004: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
0005: <head>
0006: <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
0007: <script language="JavaScript">
0008: <!--
0009: //=========================================================================
0010: //任意の年の秋分の日にちを返す
0011: //@param int yy 西暦年
0012: //@return int 日にち(9月の)
0013: //
0014: function shubun(yy) {
0015: return Math.floor(23.2488 + 0.242194 * (yy - 1980)
0016: - Math.floor((yy - 1980) / 4));
0017: }
0018:
0019: //=========================================================================
0020: //任意の年の秋分の日を表示する
0021: //@param int yy 西暦年
0022: //@return int 日にち(9月の)
0023: //
0024: function print_shubun(yy) {
0025: youbi = new Array("日", "月", "火", "水", "木", "金", "土");
0026: dd = shubun(yy);
0027: s = yy + "/09/" + dd;
0028: day = new Date(s);
0029: document.write(s + " (" + youbi[day.getDay()] + ")<br/>\n");
0030: }
0031: -->
0032: </script>
0033: </head>
0034:
0035: <body>
0036: <script language="JavaScript">
0037: <!--
0038: //=========================================================================
0039: //1980年〜2099年の秋分の日を表示する
0040: //
0041: for (yy = 1980; yy <= 2099; yy++) {
0042: print_shubun(yy);
0043: }
0044: -->
0045: </script>
0046: </body>
0047: </html>
しかし、現実の秋分の日はこの計算通りには行かない。
「国民の祝日に関する法律
」第二条によると、秋分の日は「秋分日」に当たるとされる。
では、「秋分日」とは何月何日なのか。
「秋分日」は、国立天文台が作成する「暦象年表」という小冊子に基いて閣議で決定され、
これが官報によって周知される慣習になっている(法的に決まっているわけではない)。
官報に載る時期は2月初頭で、ここに翌年の秋分の日が記載される慣習である
(これも法律、政令等で決められているわけではない)。
春分の日についても、同じ号の官報で公表される。
したがって、前年の1月以前に春分の日、秋分の日を特定することはできないのだ。
前述のプログラムはあくまで目安であって、この通りに秋分の日が決まる保証はない。
| 2007年08月25日更新 | ||
| <<前へ | <目次> | 次へ>> |
| 戻る | 【関連ページ】 | |