#! /usr/bin/perl # # calen.cgi # # 1.003 : 1/29/07 : テーブルのHTMLを修正 # 1.002 : 12/8/06 : charsetを正しく設定 # 1.001 : 11/27/06 : 一ヶ月表示の幅を修正 # 1.0 : 11/26/06 : Initial revision. # # http://www.hidekik.com # # Copyright(c) 2006-2007, Hideki Kanayama All Rights Reserved use CGI::Carp qw(fatalsToBrowser); use CGI; use Time::Local; use File::Basename; my $version = "1.003"; my $lastupdatedyear = "2007"; my $script = basename($0); # Use localtime? my $localtime_en = 0; # Offset from GMT if $localtime_en = 0 my $offset = 9; my $title = 'プリントアウト用カレンダー'; my $backlink = "calen.html"; my $backname = "解説ページへ"; my $charset = "Shift_JIS"; my $now = time; my $q = new CGI; my $cgierror = $q->cgi_error; &error($cgierror) if ($cgierror); my $reqyear = $q->param('yearset'); my $reqmon = $q->param('monset'); my $yearormon = $q->param('yearormon'); my @weekname = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday); my @monname = qw(January February March April May June July August September October November December); if ($yearormon ne ''){ &gencalen; } else { &inputform; } sub inputform { &htmlhead($title); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $localtime_en ? localtime($now) : gmtime($now + $offset * 3600); print "
\n"; print "$backname

\n"; print "

\n"; print "年\n"; print "月\n"; print "

\n"; print qq(一ヶ月表\示\n); print qq(一年表\示\n); print "

\n"; print qq(\n); print "

\n"; &htmltail; } sub gencalen { &htmlhead; if ($yearormon eq 'year'){ &yeargen; } else { &monthgen($reqmon); } print ""; print ""; exit; } sub yeargen { my $tmp = $reqyear+1900; print "

$tmp

\n"; print "\n"; foreach my $row (0 .. 3){ print "\n"; foreach my $col (0 .. 2){ print "\n"; } print "\n"; } print "
\n"; my $mon = $col+$row*3; print "$monname[$mon]\n"; &monthgen($mon); print "
\n"; } sub monthgen { my $reqmon = shift; my $starttime = $localtime_en ? timelocal(0,0,0,1,$reqmon,$reqyear) : timegm(0,0,0,1,$reqmon,$reqyear); my ($ssec,$smin,$shour,$sday,$smon,$syear,$swday,$syday,$sisdst) = $localtime_en ? localtime($starttime) : gmtime($starttime); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst); my $tmp = $reqyear+1900; if ($yearormon eq 'mon'){ print "

$monname[$smon], $tmp

\n"; } my $border; my $align; if ($yearormon eq 'mon') { $border=1; $align = "right"; } else { $border=0; $align = "center"; } print "\n"; foreach my $week (-1 .. 5) { my $sunday = $starttime - $swday * 86400 + $week * 7 * 86400; my ($sunsec,$sunmin,$sunhour,$sunmday,$sunmon,$sunyear,$sunwday,$sunyday,$sunisdst) = $localtime_en ? localtime($sunday) : gmtime($sunday); last if ($week == 5 and $sunmon != $reqmon and $week >= 0); print "\n"; foreach my $day (0 .. 6){ if ($week == -1){ print "\n"; } else { print "\n"; } } print "\n"; } print "
"; if ($yearormon eq 'mon'){ print "$weekname[$day]"; } else { print substr($weekname[$day],0,1); } print ""; if ($week == 0 and $day >= $swday or $week != 0){ my $today = $starttime + ($day - $swday + $week * 7) * 86400; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $localtime_en ? localtime($today) : gmtime($today); if ($mon == $reqmon){ if ($yearormon eq 'mon'){ print "$mday




"; } else { print "$mday"; } } else { print " "; } } else { print " "; } print "
"; } sub htmlhead { my $title = shift; print $q->header(-charset=>"$charset"); print ""; print < $title HEADPRINT } sub htmltail { my $mysite = ('http://www.hidekik.com/','http://www.hidekik.com/en/')[$lang]; print "

calen.cgi $version
Copyright(c) 2006-$lastupdatedyear, hidekik.com
\n"; print ""; print ""; exit; } sub error { my ($msg) = shift; &htmlhead($msg); print "
$msg
\n"; &htmltail; exit; }