Lines 707-713
C<$offset> Is the number of days that this function has to count from $date.
Link Here
|
707 |
|
707 |
|
708 |
sub addDate { |
708 |
sub addDate { |
709 |
my ($self, $startdate, $offset) = @_; |
709 |
my ($self, $startdate, $offset) = @_; |
710 |
$startdate = eval { output_pref( { dt => dt_from_string( $startdate ), dateonly => 1, dateformat => 'iso' } ); }; |
710 |
$startdate = eval { output_pref( { dt => $startdate, dateonly => 1, dateformat => 'iso' } ); }; |
711 |
my ( $year, $month, $day) = split( "-", $startdate ); |
711 |
my ( $year, $month, $day) = split( "-", $startdate ); |
712 |
my $daystep = 1; |
712 |
my $daystep = 1; |
713 |
if ($offset < 0) { # In case $offset is negative |
713 |
if ($offset < 0) { # In case $offset is negative |
Lines 731-773
sub addDate {
Link Here
|
731 |
($year, $month, $day) = &Date::Calc::Add_Delta_Days($year, $month, $day, $offset ); |
731 |
($year, $month, $day) = &Date::Calc::Add_Delta_Days($year, $month, $day, $offset ); |
732 |
} |
732 |
} |
733 |
my $date_ret = sprintf(ISO_DATE_FORMAT,$year,$month,$day); |
733 |
my $date_ret = sprintf(ISO_DATE_FORMAT,$year,$month,$day); |
734 |
$date_ret = eval { output_pref( { dt => dt_from_string( $date_ret), dateonly => 1, dateformat => 'iso' } ); }; |
|
|
735 |
return($date_ret); |
734 |
return($date_ret); |
736 |
} |
735 |
} |
737 |
|
736 |
|
738 |
=head2 daysBetween |
|
|
739 |
|
740 |
my $daysBetween = $calendar->daysBetween($startdate, $enddate) |
741 |
|
742 |
C<$startdate> and C<$enddate> define the interval. |
743 |
|
744 |
Returns the number of non-holiday days in the interval. |
745 |
useDaysMode syspref has no effect here. |
746 |
=cut |
747 |
|
748 |
sub daysBetween { |
749 |
my $self = shift or return; |
750 |
my $startdate = shift or return; |
751 |
my $enddate = shift or return; |
752 |
$startdate = eval { output_pref( { dt => dt_from_string( $startdate ), dateonly => 1, dateformat => 'iso' } ); }; |
753 |
$enddate = eval { output_pref( { dt => dt_from_string( $enddate ), dateonly => 1, dateformat => 'iso' } ); }; |
754 |
my ( $yearFrom, $monthFrom, $dayFrom) = split( "-", $startdate); |
755 |
my ( $yearTo, $monthTo, $dayTo ) = split( "-", $enddate); |
756 |
if (Date_to_Days($yearFrom,$monthFrom,$dayFrom) > Date_to_Days($yearTo,$monthTo,$dayTo)) { |
757 |
return 0; |
758 |
# we don't go backwards ( FIXME - handle this error better ) |
759 |
} |
760 |
my $count = 0; |
761 |
while (1) { |
762 |
($yearFrom != $yearTo or $monthFrom != $monthTo or $dayFrom != $dayTo) or last; # if they all match, it's the last day |
763 |
unless ($self->isHoliday($dayFrom, $monthFrom, $yearFrom)) { |
764 |
$count++; |
765 |
} |
766 |
($yearFrom, $monthFrom, $dayFrom) = &Date::Calc::Add_Delta_Days($yearFrom, $monthFrom, $dayFrom, 1); |
767 |
} |
768 |
return($count); |
769 |
} |
770 |
|
771 |
1; |
737 |
1; |
772 |
|
738 |
|
773 |
__END__ |
739 |
__END__ |