--- /dev/null
+package HTML::CalendarMonth::DateTool::TimeLocal;
+
+# Interface to Time::Local
+
+use strict;
+use Carp;
+
+use vars qw(@ISA $VERSION);
+
+@ISA = qw(HTML::CalendarMonth::DateTool);
+
+$VERSION = '0.01';
+
+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;