X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lib%2FHTML%2FCalendarMonth%2FDateTool%2FDateManip.pm;fp=lib%2FHTML%2FCalendarMonth%2FDateTool%2FDateManip.pm;h=d13283a7c4552ed945f837895ae243c4c384d1c0;hb=f3ef12e10123e46a0db95d820bb77f6e6d3225c7;hp=3ed893c1163ad0705e4803e8ae56eff7a7eac6d0;hpb=febd0b02136ed777f42c0e2b79d71db21c1805a8;p=deb_pkgs%2Flibhtml-calendarmonth-perl.git diff --git a/lib/HTML/CalendarMonth/DateTool/DateManip.pm b/lib/HTML/CalendarMonth/DateTool/DateManip.pm index 3ed893c..d13283a 100644 --- a/lib/HTML/CalendarMonth/DateTool/DateManip.pm +++ b/lib/HTML/CalendarMonth/DateTool/DateManip.pm @@ -1,32 +1,35 @@ package HTML::CalendarMonth::DateTool::DateManip; +BEGIN { + $HTML::CalendarMonth::DateTool::DateManip::VERSION = '1.25'; +} # Interface to Date::Manip use strict; +use warnings; use Carp; -use vars qw(@ISA $VERSION); - -@ISA = qw(HTML::CalendarMonth::DateTool); - -$VERSION = '0.02'; +use base qw( HTML::CalendarMonth::DateTool ); -use Date::Manip qw(Date_DaysInMonth Date_DayOfWeek DateCalc - UnixDate Date_SecsSince1970); +use Date::Manip qw( + Date_DaysInMonth + Date_DayOfWeek + DateCalc + UnixDate + Date_SecsSince1970 + ParseDateDelta +); sub dow1st_and_lastday { my($self, $month, $year) = @_; $month ||= $self->month; $year ||= $self->year; - my $lastday = Date_DaysInMonth($month, $year); - # Date::Manip uses 1 for Monday, 7 for Sunday as well. - my $dow1st = $self->dow(1); - ($dow1st, $lastday); + ($self->dow(1), Date_DaysInMonth($month, $year)); } sub day_epoch { my($self, $day, $month, $year) = @_; - $day || croak "Day required.\n"; + $day || croak "day required.\n"; $month ||= $self->month; $year ||= $self->year; Date_SecsSince1970($month, $day, $year, 0, 0, 0); @@ -34,25 +37,24 @@ sub day_epoch { sub dow { # Date::Manip uses 1..7 as indicies in the week, starting with Monday. - # Internally, we use 0..6, starting with Sunday. These turn out to be - # identical except for Sunday. + # Convert to 0..6 starting with Sunday. my($self, $day, $month, $year) = @_; - $day || croak "Day required.\n"; + $day || croak "day required.\n"; $month ||= $self->month; $year ||= $self->year; - my $dow = Date_DayOfWeek($month, $day, $year); - $dow = 0 if $dow == 7; - $dow; + Date_DayOfWeek($month, $day, $year) % 7; } sub add_days { my($self, $delta, $day, $month, $year) = @_; - defined $delta || croak "Delta (in days) required.\n"; - $day || croak "Day required.\n"; + defined $delta || croak "delta (in days) required.\n"; + $day || croak "day required.\n"; $month ||= $self->month; $year ||= $self->year; - my $date = DateCalc(sprintf("%04d%02d%02d", $year, $month, $day), - ($delta < 0 ? '':'+')." $delta days"); + my $date = DateCalc( + sprintf("%04d%02d%02d", $year, $month, $day), + "$delta days" + ); my($y, $m, $d) = $date =~ /^(\d{4})(\d\d)(\d\d)/; $_ += 0 foreach ($y, $m, $d); ($d, $m, $y); @@ -60,7 +62,7 @@ sub add_days { sub week_of_year { my($self, $day, $month, $year) = @_; - $day || croak "Day required.\n"; + $day || croak "day required.\n"; $month ||= $self->month; $year ||= $self->year; my $week = UnixDate(sprintf("%04d%02d%02d", $year, $month, $day), '%U');