[Koha-patches] [PATCH] various date-related cleanups in circ

Galen Charlton galen.charlton at liblime.com
Tue Apr 1 19:01:04 CEST 2008


* use Date::Calc to perform date arithmetic
* use Date::Calc::Today to consistently format the current date
* format date per syspref in overdue report
---
 circ/billing.pl         |   20 ++++++--------------
 circ/circulation.pl     |    8 +-------
 circ/overdue.pl         |    9 +++------
 circ/pendingreserves.pl |   25 ++++++-------------------
 circ/reserveratios.pl   |   20 ++++++--------------
 5 files changed, 22 insertions(+), 60 deletions(-)

diff --git a/circ/billing.pl b/circ/billing.pl
index f73962d..2577371 100755
--- a/circ/billing.pl
+++ b/circ/billing.pl
@@ -24,6 +24,7 @@ use C4::Output;
 use CGI;
 use C4::Auth;
 use C4::Dates qw/format_date format_date_in_iso/;
+use Date::Calc qw/Today Add_Delta_YM/;
 
 use vars qw($debug);
 
@@ -63,20 +64,11 @@ my $biblionumber;
 my $title;
 my $author;
 
-my @datearr    = localtime( time() );
-my 
-$todaysdate =
-    ( 1900 + $datearr[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr[3] );
-
+my ( $year, $month, $day ) = Today();
+my $todaysdate   = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day);
 # Find yesterday for the default shelf pull start and end dates
-#    A defualt of the prior years's holds is a reasonable way to pull holds 
-my @datearr_yesterday    = localtime( time() - 86400*365 );
-my $yesterdaysdate =
-    ( 1900 + $datearr_yesterday[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr_yesterday[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr_yesterday[3] );
+#    A default of the prior years's holds is a reasonable way to pull holds 
+my $datelastyear = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, -1, 0));
 
 #		Predefine the start and end dates if they are not already defined
 $startdate =~ s/^\s+//;
@@ -85,7 +77,7 @@ $enddate =~ s/^\s+//;
 $enddate =~ s/\s+$//;
 #		Check if null, should string match, if so set start and end date to yesterday
 if (!defined($startdate) or $startdate eq "") {
-	$startdate = format_date($yesterdaysdate);
+	$startdate = format_date($datelastyear);
 }
 if (!defined($enddate) or $enddate eq "") {
 	$enddate = format_date($todaysdate);
diff --git a/circ/circulation.pl b/circ/circulation.pl
index ee3c820..128864c 100755
--- a/circ/circulation.pl
+++ b/circ/circulation.pl
@@ -153,13 +153,7 @@ if ($duedatespec) {
 #        ($year, $month, $day) = ($duedatespec) ? split /-/, $duedatespec : (0,0,0);
 #}
 
-my @datearr = localtime();
-
-# FIXME - Could just use POSIX::strftime("%Y%m%d", localtime);
-my $todaysdate =
-    ( 1900 + $datearr[5] )
-  . sprintf( "%0.2d", ( $datearr[4] + 1 ) )
-  . sprintf( "%0.2d", ( $datearr[3] ) );
+my $todaysdate     = sprintf("%-04.4d%-02.2d%-02.2d", Today());
 
 # check and see if we should print
 if ( $barcode eq '' && $print eq 'maybe' ) {
diff --git a/circ/overdue.pl b/circ/overdue.pl
index 8373908..27265d7 100755
--- a/circ/overdue.pl
+++ b/circ/overdue.pl
@@ -25,6 +25,7 @@ use CGI;
 use C4::Auth;
 use C4::Branch;
 use C4::Dates qw/format_date/;
+use Date::Calc qw/Today/;
 
 my $input = new CGI;
 my $type    = $input->param('type');
@@ -135,12 +136,8 @@ my $phone;
 my $email;
 my $title;
 my $author;
-my @datearr    = localtime( time() );
-my $todaysdate =
-    ( 1900 + $datearr[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr[3] );
 
+my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", Today());
 
 $bornamefilter =~s/\*/\%/g;
 $bornamefilter =~s/\?/\_/g;
@@ -208,7 +205,7 @@ while (my $data=$sth->fetchrow_hashref) {
 }
 
 $template->param(
-    todaysdate  => $todaysdate,
+    todaysdate  => format_date($todaysdate),
     overdueloop => \@overduedata
 );
 
diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl
index 326fb30..7400638 100755
--- a/circ/pendingreserves.pl
+++ b/circ/pendingreserves.pl
@@ -29,6 +29,7 @@ use C4::Output;
 use CGI;
 use C4::Auth;
 use C4::Dates qw/format_date format_date_in_iso/;
+use Date::Calc qw/Today Add_Delta_YMD/;
 
 use vars qw($debug);
 
@@ -67,26 +68,12 @@ my $biblionumber;
 my $title;
 my $author;
 
-my @datearr    = localtime( time() );
-my $todaysdate =
-    ( 1900 + $datearr[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr[3] );
-
-# Find yesterday for the default shelf pull end dates
-#    A defualt of the prior day's holds is a reasonable way to pull holds 
-my @datearr_yesterday    = localtime( time() - 86400 );
-my $yesterdaysdate =
-    ( 1900 + $datearr_yesterday[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr_yesterday[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr_yesterday[3] );
+my ( $year, $month, $day ) = Today();
+my $todaysdate     = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day);
+my $yesterdaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day,   0, 0, -1));
 # Find 10 years ago for the default shelf pull start and end dates
-#    A defualt of the prior day's holds is a reasonable way to pull holds 
-my @datearr_past    = localtime( time() - 86400*365*10 );
-my $pastdate =
-    ( 1900 + $datearr_past[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr_past[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr_past[3] );
+#    A default of the prior day's holds is a reasonable way to pull holds 
+my $pastdate       = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day, -10, 0,  0));
 
 #		Predefine the start and end dates if they are not already defined
 $startdate =~ s/^\s+//;
diff --git a/circ/reserveratios.pl b/circ/reserveratios.pl
index b45bab0..d7fecbe 100755
--- a/circ/reserveratios.pl
+++ b/circ/reserveratios.pl
@@ -24,6 +24,7 @@ use C4::Output;
 use CGI;
 use C4::Auth;
 use C4::Dates qw/format_date format_date_in_iso/;
+use Date::Calc qw/Today Add_Delta_YM/;
 
 use vars qw($debug);
 
@@ -63,20 +64,11 @@ my $biblionumber;
 my $title;
 my $author;
 
-my @datearr    = localtime( time() );
-my 
-$todaysdate =
-    ( 1900 + $datearr[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr[3] );
-
+my ( $year, $month, $day ) = Today();
+my $todaysdate     = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day);
 # Find yesterday for the default shelf pull start and end dates
-#    A defualt of the prior years's holds is a reasonable way to pull holds 
-my @datearr_yesterday    = localtime( time() - 86400*365 );
-my $yesterdaysdate =
-    ( 1900 + $datearr_yesterday[5] ) . '-'
-  . sprintf( "%0.2d", ( $datearr_yesterday[4] + 1 ) ) . '-'
-  . sprintf( "%0.2d", $datearr_yesterday[3] );
+#    A default of the prior years's holds is a reasonable way to pull holds 
+my $datelastyear = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, -1, 0));
 
 #		Predefine the start and end dates if they are not already defined
 $startdate =~ s/^\s+//;
@@ -85,7 +77,7 @@ $enddate =~ s/^\s+//;
 $enddate =~ s/\s+$//;
 #		Check if null, should string match, if so set start and end date to yesterday
 if (!defined($startdate) or $startdate eq "") {
-	$startdate = format_date($yesterdaysdate);
+	$startdate = format_date($datelastyear);
 }
 if (!defined($enddate) or $enddate eq "") {
 	$enddate = format_date($todaysdate);
-- 
1.5.5.rc0.16.g02b00




More information about the Koha-patches mailing list