1 package HTML::CalendarMonth::DateTool::DateManip;
3 # Interface to Date::Manip
8 use vars qw(@ISA $VERSION);
10 @ISA = qw(HTML::CalendarMonth::DateTool);
14 use Date::Manip qw(Date_DaysInMonth Date_DayOfWeek DateCalc
15 UnixDate Date_SecsSince1970);
17 sub dow1st_and_lastday {
18 my($self, $month, $year) = @_;
19 $month ||= $self->month;
20 $year ||= $self->year;
21 my $lastday = Date_DaysInMonth($month, $year);
22 # Date::Manip uses 1 for Monday, 7 for Sunday as well.
23 my $dow1st = $self->dow(1);
28 my($self, $day, $month, $year) = @_;
29 $day || croak "Day required.\n";
30 $month ||= $self->month;
31 $year ||= $self->year;
32 Date_SecsSince1970($month, $day, $year, 0, 0, 0);
36 # Date::Manip uses 1..7 as indicies in the week, starting with Monday.
37 # Internally, we use 0..6, starting with Sunday. These turn out to be
38 # identical except for Sunday.
39 my($self, $day, $month, $year) = @_;
40 $day || croak "Day required.\n";
41 $month ||= $self->month;
42 $year ||= $self->year;
43 my $dow = Date_DayOfWeek($month, $day, $year);
44 $dow = 0 if $dow == 7;
49 my($self, $delta, $day, $month, $year) = @_;
50 $delta || croak "Delta (in days) required.\n";
51 $day || croak "Day required.\n";
52 $month ||= $self->month;
53 $year ||= $self->year;
54 my $date = DateCalc(sprintf("%04d%02d%02d", $year, $month, $day),
56 my($y, $m, $d) = $date =~ /^(\d{4})(\d\d)(\d\d)/;
57 $_ += 0 foreach ($y, $m, $d);
62 my($self, $day, $month, $year) = @_;
63 $day || croak "Day required.\n";
64 $month ||= $self->month;
65 $year ||= $self->year;
66 my $week = UnixDate(sprintf("%04d%02d%02d", $year, $month, $day), '%U');