Provided by: libhtml-calendarmonth-perl_2.04-1_all bug

NAME

       HTML::CalendarMonth::DateTool - Base class for determining which date package to use for
       calendrical calculations.

SYNOPSIS

         my $date_tool = HTML::CalendarMonth::DateTool->new(
                           year     => $YYYY_year,
                           month    => $one_thru_12_month,
                           weeknum  => $weeknum_mode,
                           historic => $historic_mode,
                           datetool => $specific_datetool_if_desired,
                         );

DESCRIPTION

       This module attempts to utilize the best date calculation package available on the current
       system. For most contemporary dates this usually ends up being the internal Time::Local
       package of perl. For more exotic dates, or when week number of the years are desired,
       other methods are attempted including DateTime, Date::Calc, Date::Manip, and the
       linux/unix 'ncal' or 'cal' commands. Each of these has a specific subclass of this module
       offering the same utility methods needed by HTML::CalendarMonth.

METHODS

       new()
           Constructor. Takes the following parameters:

           year
               Year of calendar in question (required). If you are rendering exotic dates (i.e.
               dates outside of 1970 to 2038) then something besides Time::Local will be used for
               calendrical calculations.

           month
               Month of calendar in question (required). 1 through 12.

           weeknum
               Optional. When specified, will limit class excursions to those that are currently
               set up for week of year calculations.

           historic
               Optional. If the the ncal or cal commands are available, use one of them rather
               than other available date modules since these utilities accurately handle some
               specific historical artifacts such as the transition from Julian to Gregorian.

           datetool
               Optional. Mostly for debugging, this option can be used to indicate a specific
               HTML::CalendarMonth::DateTool subclass for instantiation. The value can be either
               the actual utility class, e.g., Date::Calc, or the name of the CalendarMonth
               handler leaf class, e.g. DateCalc. Use 'ncal' or 'cal', respectively, for the
               wrappers around those commands.

       There are number of methods automatically available:

       month()
       year()
       weeknum()
       historical()
       datetool()
           Accessors for the parameters provided to "new()" above.

       dow1st()
           Returns the day of week number for the 1st of the "year" and "month" specified during
           the call to "new()". Relies on the presence of "dow1st_and_lastday()". Should be 0..6
           starting with Sun.

       lastday()
           Returns the last day of the month for the "year" and "month" specified during the call
           to "new()". Relies on the presence of "dow1st_and_lastday()".

Overridden methods

       Subclasses of this module must provide at least the "day_epoch()" and
       "dow1st_and_lastday()" methods.

       dow1st_and_lastday()
           Required. Provides a list containing the day of the week of the first day of the month
           (0..6 starting with Sun) along with the last day of the month.

       day_epoch()
           Optional unless interested in epoch values for wacky dates. For a given day, and
           optionally "month" and "year" if they are different from those specified in "new()",
           provide the unix epoch in seconds for that day at midnight.

       If the subclass is expected to provide week of year numbers, three more methods are
       necessary:

       dow()
           For a given day, and optionally "month" and "year" if they are different from those
           specified in "new()", provide the day of week number. (0=Sunday, 6=Saturday).

       add_days($days, $delta, $day, [$month], [$year])
           For a given day, and optionally "month" and "year" if they are different from those
           specified in "new()", provide a list of year, month, and day once "delta" days have
           been added.

       week_of_year($day, [$month], [$year])
           For a given day, and optionally "month" and "year" if they are different from those
           specified in "new()", provide a list with the week number of the year along with the
           year. (some days of a particular year can end up belonging to the prior or following
           years).

AUTHOR

       Matthew P. Sisk, <sisk@mojotoad.com>

COPYRIGHT

       Copyright (c) 2010 Matthew P. Sisk. All rights reserved. All wrongs revenged. This program
       is free software; you can redistribute it and/or modify it under the same terms as Perl
       itself.

SEE ALSO

       HTML::CalendarMonth(3), Time::Local(3), DateTime(3), Date::Calc(3), Date::Manip(3), cal(1)