| [an error occurred while processing this directive] |
カレンダー de ココ |
「年月日や曜日・時刻の取得」では、現在の年月日や時刻を扱うlocaltime関数の説明をしました。このページではlocaltime関数を使ってカレンダーを作ってみます。このページの下では calender.cgiのスクリプトを表示できるようにリンクしておきました。スクリプトにはコメントを多くしておきましたので参照してください。
この CGI はスクリプト本体(calender.cgi)とデータ部分(data_yearly.datとdata_monthly.dat)からなっています。 データ部分 またdata_monthly.datは 年・月のデータ共に、行の先頭に#がある場合はデータを無視して読み飛ばします。また休日フラグは 1 が休日で、 0 は通常の日として扱います。休日は背景色を平日と変えてあります。 月日で固定できない「秋分の日」などや、曜日で変化する「体育の日」などはスクリプト本体で定義しています。 スクリプト本体 初期設定(1)でテーブルのサイズや日付・曜日の文字サイズ、曜日ごとの背景色を定義してありますので、自由に変更できるようになっています。 data_yearly.dat や data_monthly.dat では取得できない祝日にも対応しています。2000年から施行の「国民の祝日に関する法律」(いわゆる「ハッピーマンデー」)により、成人の日は1月の第2月曜日、体育の日は10月の第2月曜日となりましたので2000年以降かどうかで判断しています。また憲法記念日(5月3日)と国民の休日(5月4日)以外の祝日が、日曜の場合は翌日の月曜日が振替休日となりますので、これも算出しています。 また年毎に変化する春分の日は (年 % 4 == 0 && 年 % 100 != 0) || 年 % 400 == 0 で求めています(% は剰余、割り算の余り)。4で割り切れるが100で割り切れなく、かつ400で割り切れる年となります。
【→Perl Reference: time】 【→Perl Reference: localtime】 calender.cgi のスクリプトが長いので、このページには表示しません。下に calender_cgi.txt として表示できるようにしておきましたので参考にしてください。ご自分のPCで試されるときはcalender.cgi と名前を変えてください。サーバに移されるときは、パーミッションを757にする必要があります。 その他に年データと月データもお忘れないように。calender.cgi と同じディレクトリに置いてください。 ・calender_cgi.txt(本体)・data_yearly.dat(年データ) ・data_monthly.dat(月データ) |
| | Back | Coco's Home | ココとPerlで遊びませんか | |