Your script appears to break every 4th year....
http://danconia.org
Chris Welch wrote:
The attached text file is an example of a calendar I've used for CGI purposes (I should point out this is not entirely my script, it's modified by me but the original was by a friend of mine.)
-----Original Message----- From: Mandar Rahurkar [mailto:[EMAIL PROTECTED] Sent: 15 June 2004 23:22 Cc: [EMAIL PROTECTED] Subject: Time
Hello All, I was wondering if there any module in perl which will let
me
add dates taking care of all the complications (i.e.,) if day is
greater
than 30 change month and so on.
Thanks, Mandar
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>
------------------------------------------------------------------------
#! C:\web\perl\bin\perl.exe
require("../admin/mkttl.conf");
use CGI; use Time::Local; ## from DMYHMS to epoch
$q = new CGI;
(my $true_sec, my $true_min, my $true_hour, my $true_mday, my $true_mon, my $true_year, my $true_wday, my $true_yday, my $true_isdst) = localtime(time);
$days_in_month[0] = 31; $days_in_month[1] = 28; $days_in_month[2] = 31; $days_in_month[3] = 30; $days_in_month[4] = 31; $days_in_month[5] = 30; $days_in_month[6] = 31; $days_in_month[7] = 31; $days_in_month[8] = 30; $days_in_month[9] = 31; $days_in_month[10] = 30; $days_in_month[11] = 31;
$months[0] = 'January'; $months[1] = 'February'; $months[2] = 'March'; $months[3] = 'April'; $months[4] = 'May'; $months[5] = 'June'; $months[6] = 'July'; $months[7] = 'August'; $months[8] = 'September'; $months[9] = 'October'; $months[10] = 'November'; $months[11] = 'December';
$days[0] = 'Sunday'; $days[1] = 'Monday'; $days[2] = 'Tuesday'; $days[3] = 'Wednesday'; $days[4] = 'Thursday'; $days[5] = 'Friday'; $days[6] = 'Saturday';
# The calendar $mon = ($q->param("month") - 1); $year = ($q->param("year")) if ($q->param("year")); $year = $true_year if ($year eq ""); # Use today's date if none are specified $mon = $true_mon if ($mon == -1);
$todays_day_of_month = $true_mday if ($true_mon eq $mon && $true_year eq $year);
my $first_day_of_month_epoch = timelocal(1, 0, 0,1, $mon, $year);
(my $sec, my $min, my $hour, my $mday, my $mon, my $year, my $wday, my $yday, my $isdst) = localtime($first_day_of_month_epoch);
$inset_month = $wday - 1; $inset_month = 6 if ($inset_month < 0);
print "<table border='0' cellspacing='1' cellpadding='1' class='calendar' align='right'> <tr> <td colspan='7' align='center' class='cal_head'> <table border='0' width='100%' cellpadding='0' cellspacing='0' class='month_header'><tr><td width='10' align='left'><b><a class='bold' href='";
## define previous and next months and years $prev_month = $mon; $prev_year = $year;
if ($prev_month eq 0) { $prev_month = 12; $prev_year--; }
$next_month = ($mon+2); $next_year = $year;
if ($next_month eq 13) { $next_month = 1; $next_year++; }
print "main.cgi?month=".$prev_month."&year=".$prev_year."'>«</a></b></td><td width='*' align='center'><a class='bold' href='main.cgi'>".$months[$mon]." ".($year + 1900)."</a></td><td width='10' align='right'><b><a class='bold' href='main.cgi?month=".$next_month."&year=".$next_year."'>»</a></b></td></tr></table> </td> </tr> <tr> <td class='day_of_week'>M</td> <td class='day_of_week'>T</td> <td class='day_of_week'>W</td> <td class='day_of_week'>T</td> <td class='day_of_week'>F</td> <td class='day_of_week'>S</td> <td class='day_of_week'>S</td> </tr>\n"; $day_position_counter = 0; $day_number_counter = 1; $final_day_number = $days_in_month[$mon];
## first create inset $i = 0; while ($i < $inset_month){ print " <tr>\n" if $day_position_counter == 0; print " <td> </td>\n"; $day_position_counter++; $i++; }
## now create main section
while ($day_number_counter <= $final_day_number){
## setup todays info
$todays_epoch_date = timelocal(0, 0, 12, ($day_number_counter), $mon, $year);
print " <tr>\n" if $day_position_counter == 0;
if ($todays_day_of_month eq $day_number_counter){
print " <td class='today'>".$day_number_counter."</td>\n";
} else {
print " <td>".$day_number_counter."</td>\n";
}
$day_position_counter++;
if ($day_position_counter == 7){
$day_position_counter = 0;
print " </tr>\n";
}
$day_number_counter++; }
## now finish off the row if necessary
while ($day_position_counter){
print " <td class='blank_date'> </td>\n";
$day_position_counter++;
if ($day_position_counter == 7){
$day_position_counter = 0;
print " </tr>\n";
}
}
print "</table>\n\n"; print "</body>\n\n"; print "</html>\n";
exit;
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>