Ah good point, I believe I forgot the line:

$days_in_month[1] = 29 if $printed_year % 4 == 0;

Better?  If not apologies, not sure why that would be :)

> -----Original Message-----
> From: Wiggins d'Anconia [mailto:[EMAIL PROTECTED]
> Sent: 16 June 2004 01:18
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]; 'Mandar Rahurkar'
> Subject: Re: Time
> 
> 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."'>&laquo;</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."'>&raquo;</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>&nbsp;</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'>&nbsp;</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>


Reply via email to