The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package HTML::CalendarMonth::DateTool::TimeLocal;
{
  $HTML::CalendarMonth::DateTool::TimeLocal::VERSION = '1.26';
}

# Interface to Time::Local

use strict;
use warnings;
use Carp;

use base qw( HTML::CalendarMonth::DateTool );

use Time::Local;

sub dow1st_and_lastday {
  my($self, $month, $year) = @_;
  $month ||= $self->month;
  $year  ||= $self->year;
  # map month to 0-12
  --$month;
  # years since 1900...hooh-rah for POSIX...
  $year -= 1900;
  my $nmonth = $month + 1;
  my $nyear  = $year;
  if ($nmonth > 11) {
    # Happy new year
    $nmonth = 0;
    ++$nyear;
  }
  # Leave dow of 1st in 0-based format
  my $dow1st  = (gmtime(Time::Local::timegm(0,0,0,1,$month,$year)))[6];
  # Last day is one day prior to 1st of month after
  my $lastday = (gmtime(Time::Local::timegm(0,0,0,1,$nmonth,$nyear)
                        - 60*60*24))[3];
  ($dow1st, $lastday);
}

1;