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

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.

Replies are listed 'Best First'.
Re: Re: Re: Date::Calc to HTML::CalendarMonth
by Mr. Muskrat (Canon) on Nov 11, 2002 at 20:27 UTC

    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)

        Interesting usage of Date_to_Days and Add_Delta_Days!

        This works but feel free to do whatever you like with it...

        #!/usr/bin/perl use strict; use warnings; use CGI qw(:standard); use Date::Calc qw(:all); use HTML::AsSubs; use HTML::Element; use HTML::CalendarMonth; my @dates = (731158, 731159, 731160, 731161, 731178); my @days; foreach my $days (@dates) { my $dates = Add_Delta_Days(1,1,1, $days - 1); push (@days, $dates); } my $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_daycol('Su','Sa')->attr(bgcolor => 'cyan'); print header(), start_html(-title => 'Test Calendar'), $c->as_HTML, en +d_html();