###############################################################################
## Copyright (c) 2000 - 2002 by Steffen Beyer. ##
## All rights reserved. ##
## This package is free software; you can redistribute it ##
## and/or modify it under the same terms as Perl itself. ##
###############################################################################
use vars
qw( @ISA @EXPORT @EXPORT_OK $VERSION );
use Carp
::Clan
qw(^Date::);
use Date
::Calc
::Object
qw(:ALL);
use Date
::Calendar
::Year
qw( check_year empty_period );
my($language) = shift || 0;
$class = ref($class) || $class || 'Date::Calendar';
my($year) = shift_year
(\
@_);
if (defined $self->[0]{$year})
return $self->[0]{$year};
return $self->[0]{$year} =
Date
::Calendar
::Year
->new( $year, $self->[1], $self->[2] );
return( sort {$a<=>$b} keys(%{$self->[0]}) );
return( map $self->[0]{$_}, sort {$a<=>$b} keys(%{$self->[0]}) );
if (exists $self->[0]{$year})
delete $self->[0]{$year};
my(@date) = shift_date
(\
@_);
return $self->year($date[0])->date2index(@date);
return $self->year($date[0])->labels(@date);
foreach $year (keys(%{$self->[0]}))
grep( $result{$_} = 0, $self->year($year)->labels() );
return wantarray ?
(keys %result) : scalar(keys %result);
foreach $year (sort {$a<=>$b} keys(%{$self->[0]}))
push( @result, $self->year($year)->search($pattern) );
return wantarray ?
(@result) : scalar(@result);
my($yy1,$mm1,$dd1) = shift_date
(\
@_);
my($yy2,$mm2,$dd2) = shift_date
(\
@_);
my($including1,$including2) = (shift,shift);
return $self->year($yy1)->delta_workdays(
$yy1,$mm1,$dd1, $yy2,$mm2,$dd2, $including1,$including2);
unless (($mm1 == 12) && ($dd1 == 31) && (!$including1))
$days += $self->year($yy1)->delta_workdays(
$yy1,$mm1,$dd1, $yy1,12,31, $including1,1);
unless (($mm2 == 1) && ($dd2 == 1) && (!$including2))
$days += $self->year($yy2)->delta_workdays(
$yy2, 1, 1, $yy2,$mm2,$dd2, 1,$including2);
for ( $year = $yy1 + 1; $year < $yy2; $year++ )
$days += $self->year($year)->delta_workdays(
$year,1,1, $year,12,31, 1,1);
unless (($mm2 == 12) && ($dd2 == 31) && (!$including2))
$days -= $self->year($yy2)->delta_workdays(
$yy2,$mm2,$dd2, $yy2,12,31, $including2,1);
unless (($mm1 == 1) && ($dd1 == 1) && (!$including1))
$days -= $self->year($yy1)->delta_workdays(
$yy1, 1, 1, $yy1,$mm1,$dd1, 1,$including1);
for ( $year = $yy2 + 1; $year < $yy1; $year++ )
$days -= $self->year($year)->delta_workdays(
$year,1,1, $year,12,31, 1,1);
&empty_period
() if ($empty);
my($yy,$mm,$dd) = shift_date
(\
@_);
$rest = $self->year($yy)->date2index($yy,$mm,$dd); # check date
$date = Date
::Calc
->new($yy,$mm,$dd);
return wantarray ?
($date,$days) : $date;
$sign = ($days > 0) ?
+1 : -1;
($date,$rest,$sign) = $self->year($yy)->add_delta_workdays($yy,$mm,$dd,$days,$sign);
($date,$rest,$sign) = $self->year($date)->add_delta_workdays($date,$rest,$sign);
return wantarray ?
($date,$rest) : $date;
my(@date) = shift_date
(\
@_);
my($year) = $self->year($date[0]);
return $year->vec_full->bit_test( $year->date2index(@date) );
my(@date) = shift_date
(\
@_);
my($year) = $self->year($date[0]);
return $year->vec_half->bit_test( $year->date2index(@date) );
my(@date) = shift_date
(\
@_);
my($year) = $self->year($date[0]);
return $year->vec_work->bit_test( $year->date2index(@date) );