use
vars
qw(@ISA $VERSION)
;
@ISA
=
qw(HTML::CalendarMonth::DateTool)
;
$VERSION
=
'0.01'
;
use
Date::Calc
qw(Days_in_Month Day_of_Week Add_Delta_Days
Weeks_in_Year Week_of_Year Week_Number Mktime
)
;
sub
dow1st_and_lastday {
my
(
$self
,
$month
,
$year
) =
@_
;
$month
||=
$self
->month;
$year
||=
$self
->year;
my
$lastday
= Days_in_Month(
$year
,
$month
);
my
$dow1st
=
$self
->dow(1);
$dow1st
= 0
if
$dow1st
== 7;
(
$dow1st
,
$lastday
);
}
sub
day_epoch {
my
(
$self
,
$day
,
$month
,
$year
) =
@_
;
$month
||=
$self
->month;
$year
||=
$self
->year;
Mktime(
$year
,
$month
,
$day
, 0, 0, 0);
}
sub
dow {
my
(
$self
,
$day
,
$month
,
$year
) =
@_
;
$day
|| croak
"Day required.\n"
;
$month
||=
$self
->month;
$year
||=
$self
->year;
Day_of_Week(
$year
,
$month
,
$day
);
}
sub
add_days {
my
(
$self
,
$delta
,
$day
,
$month
,
$year
) =
@_
;
$delta
|| croak
"Delta (in days) required.\n"
;
$day
|| croak
"Day required.\n"
;
$month
||=
$self
->month;
$year
||=
$self
->year;
my
(
$y
,
$m
,
$d
) = Add_Delta_Days(
$year
,
$month
,
$day
,
$delta
);
(
$d
,
$m
,
$y
);
}
sub
week_of_year {
my
(
$self
,
$day
,
$month
,
$year
) =
@_
;
$day
|| croak
"Day required.\n"
;
$month
||=
$self
->month;
$year
||=
$self
->year;
my
(
$week
,
$year
) = Week_of_Year(
$year
,
$month
,
$day
);
(
$year
,
$week
);
}
1;