in reply to Date::Calc to HTML::CalendarMonth

On second thought, perhaps you should look at the Date::Calc::Object and Date::Calendar modules.

Replies are listed 'Best First'.
Re: Re: Date::Calc to HTML::CalendarMonth
by jonnyfolk (Vicar) on Nov 11, 2002 at 20:04 UTC
    absolutely, the code I'm using is:
    my $d = $query->param('days'); #2 digit my $m = $query->param('months'); #2 digit my $y = $query->param('years'); #4 digit my $Dd = $query->param('Dd'); $days = Date_to_Days($y,$m,$d);
    I'll check out the modules you mention, though I'm still interested in getting the html::calmonth working as it seems to be geared up for this. Thanks for your help.

      I meant that you might want to use Date::Calc::Object and Date::Calendar with HTML::CalendarMonth.

      What is the point of calculating Date_to_Days? Why not store it in epoch seconds instead?

      Quick example to illustrate epoch seconds...

      #!/usr/bin/perl use strict; use warnings; use Time::Local; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst); $mday = 13; $mon = 9; # 0 - 11, so this is October $year = 1973; # use 12pm my $seconds = timelocal(0,0,12,$mday,$mon,$year); print "epoch seconds: $seconds.\n"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($sec +onds); $year += 1900; $mon++; printf "%02d:%02d:%02d %04d-%02d-%02d\n", ($hour,$min,$sec,$year,$mon, +$mday);

      update: You could also use the Date_to_Time and Time_to_Date functions of Date::Calc.

      #!/usr/bin/perl use strict; use warnings; use Date::Calc qw(:all); my ($sec,$min,$hour,$day,$month,$year, $seconds); $sec = 0; $min = 0; $hour = 12; $day = 13; $month = 10; $year = 1973; $seconds = 0; # use 12pm $seconds = Date_to_Time($year,$month,$day, $hour,$min,$sec); print "epoch seconds: $seconds.\n"; ($year,$month,$day, $hour,$min,$sec) = Time_to_Date($seconds); printf "%02d:%02d:%02d %04d-%02d-%02d\n", ($hour,$min,$sec,$year,$mont +h,$day);

        Once again, thanks for the input - it's been really
        useful.

        I shied away from epoch seconds as I am only
        working with days and the Date::Calc functions seemed
        to simplify this.

        I had thought that it would be necessary to feed
        the $days straight into HTML::CalendarMonth
        but it seems that I need to reconvert and I can do that using:

        $days = Date_to_Days($year,$month,$day); ($year,$month,$day) = Add_Delta_Days(1,1,1, $days - 1);
        from the example page I get:
        $c->item($c->month)->wrap_content(font({size => '+2'})); $c->item($c->dayheaders)->wrap_content(font({size => '-1'})); $c->item(15,16,17)->wrap_content(font({size => 4, color => 'red'})); $c->item(6,28)->wrap_content(new HTML::Element 'blink'); $c->item_daycol('Su','Sa')->attr(bgcolor => 'cyan'); print $c->as_HTML;
        Although I haven't cracked the whole thing (I want to
        generate the whole calendar using variables $year
        $month $day) I have now managed to highlight
        the days in the calendar by using the following:
        #!/usr/bin/perl -w use CGI qw(:standard); use Date::Calc qw(:all); use HTML::AsSubs; use HTML::Element; use HTML::CalendarMonth; my $dates = "($year,$month,$day)"; print "Content-type: text/html\n\n"; my @dates = (731158, 731159, 731160, 731161, 731178); foreach $days (@dates) { $dates = Add_Delta_Days(1,1,1, $days - 1); push (@days, $dates); } $c = new HTML::CalendarMonth; month => 11, year => 2002, $c->item($c->month)->wrap_content(font({size => '+2'})); $c->item($c->dayheaders)->wrap_content(font({size => '-1'})); $c->item(@days)->wrap_content(font({size => 4, color => 'red'})); $c->item(6,28)->wrap_content(new HTML::Element 'blink'); $c->item_daycol('Su','Sa')->attr(bgcolor => 'cyan'); print $c->as_HTML;
        Now I think all I have to do is connect in the variables $year $month and I shall be there. (but the midnight hour approacheth so I'll check it out manyana)