サンプル・プログラムの解説:カレンダー計算 |
|
|
0017: /** |
|
|
PHP には曜日などの計算を行うための関数として data が用意されている。 しかし、date はUNIX 時間を基準にしているため、1970 年 1 月 1 日以降でないと使えない。今回は 1948 年から対応しなければならないため、別のカレンダー関数を用意する必要がある。 PHP の環境によってはカレンダー関数が利用できる。 しかし、当サーバの環境では利用できないため、同様の関数を用意することにした。 指定した月の日数を返す関数として cal_days_in_month があるが、これも利用できないため、代わりにユーザー関数 getDaysInMonth を用意した。ある年が閏年(うるう年)かどうか判定する必要があるが、これについては「PHP で閏年かどうか判定する」で解説した通りである。 紀元前 4713 年 1 月 1 日からの通日をあらわす「ユリウス日」(Julian Day)というものがある。これであれば人類の有史時代全体を網羅できるので、天文学や歴史学で重宝されている。 ユーザー関数 Gregorian2JD は、西暦年月日からユリウス日を求める。JD2Gregorian は、ユリウス日から西暦年月日を求める。 getWeekNumber は、西暦年月日に対応する曜日番号を求める。曜日番号は、日曜日が 0、月曜日が 1‥‥土曜日が 6 である。 |
サンプル・プログラムの解説:固定祝日 |
|
|
0094: /** |
|
|
毎年月日が決まっている祝日である。 1948 年(昭和 23 年)に 9 つの祝日で始まった。ただし、7 月 20 日に公布・施行だったため、7 月 19 日以前の 6 つの祝日は翌1949 年から有効になった。 その後、東京オリンピックの翌年(1966 年、昭和 41 年)に体育の日などが追加されていく。このときも 6 月 25 日に公布・施行だったため、建国記念の日(2 月 11 日)は翌1967 年から有効になった。 その後、昭和天皇の崩御(1989 年、昭和 64 年)に伴い、「天皇誕生日」の名称が目まぐるしく変わる。 また、いわゆるハッピーマンデー法の成立によって、2000 年(平成 14 年)と 2003 年(平成 17 年)の二度にわたり、合計4 つの祝日が移動した。 ユーザー関数 getFixedHoliday は、西暦年月日を与え、祝日であればその名称を返す。 プログラムは、まず、固定祝日の一覧を配列 $fixed_holiday に用意する。今後、固定祝日が変更になった場合は、この配列を変更するだけで対応できるようになっている。 そして、引数の月 $month と日 $day が合致するかどうかを調べる。 祝日の名称として、日本語と英語のいずれかを返すことができるようにしてある。 |
|
|
|
|
|
2009年06月13日 作成
2009年06月23日 更新
Copyright by studio pahoo, (C)2009
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 ★本ページへのご意見・ご質問・お便りは、ここをクリックしてください。 |