とりあえず、完成品のサンプルです
使用したカレンダーモジュールは2つ
このモジュールは、年と月を引数にして問い合わせると、1週間分の日にちの配列が入った1か月分の配列を返してきます。
@1か月分(@第1週目,@第2週目,@第3週目,@第4週目) こんな感じ?
このモジュールに年と月と日を引数に問い合わせると、その日が祝日ならば、その名称を日本語で返してくれます。(すごーい)
完成品のサンプルはCSSで整形して、色も付けてますが、中心となるカレンダー部分のソースはこれだけです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
use Calendar::Simple; use Calendar::Japanese::Holiday; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime; $year += 1900; $mon++; my @months = qw(1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月); my @week = qw/日 月 火 水 木 金 土/; my @month = calendar($mon, $year, 0); # 0 = 週の開始を日曜日 print "$year 年 $months[$mon -1]"; print "<table>"; print "<tr>"; foreach (@week){ print "<th>$_</th>"; } print "</tr>"; foreach my $mdays(@month) { print "<tr>"; foreach my $mday(@$mdays){ my $holidayname = isHoliday($year, $mon, $mday); print "<td>$mday $holidayname</td>"; } print "</tr>"; } print "</table>"; |
日付を取るのも「Time::Piece」を使ってやりたかったのですが、サーバーにアップしたらエラーになってしまったのでローカルタイム方式で処理しました