@@ -, +, @@ --- C4/Installer/PerlDependencies.pm | 10 ---------- Koha/DateUtils.pm | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 18 deletions(-) --- a/C4/Installer/PerlDependencies.pm +++ a/C4/Installer/PerlDependencies.pm @@ -782,16 +782,6 @@ our $PERL_DEPS = { 'required' => '1', 'min_ver' => '1.10', }, - 'Date::Range' => { - 'usage' => 'Compare date range', - 'required' => '1', - 'min_ver' => '1.41', - }, - 'Date::Simple' => { - 'usage' => 'Works with Date::Range', - 'required' => '1', - 'min_ver' => '3.03', - } }; 1; --- a/Koha/DateUtils.pm +++ a/Koha/DateUtils.pm @@ -18,8 +18,6 @@ package Koha::DateUtils; use Modern::Perl; use DateTime; -use Date::Range; -use Date::Simple; use C4::Context; use Carp; @@ -309,12 +307,34 @@ sub format_sqldatetime { sub date_ranges_overlap { my ($start1, $end1, $start2, $end2) = @_; - - my $range1 = Date::Range->new(Date::Simple->new($start1), Date::Simple->new($end1)); - my $range2 = Date::Range->new(Date::Simple->new($start2), Date::Simple->new($end2)); - - if ($range1->overlaps($range2)) { - return $range1->overlap($range2); +warn "$start1, $end1, $start2, $end2"; +#2015-11-25, 2015-11-30, 2015-11-01, 2015-11-20 + + $start1 = dt_from_string( $start1, 'iso' ); + $end1 = dt_from_string( $end1, 'iso' ); + $start2 = dt_from_string( $start2, 'iso' ); + $end2 = dt_from_string( $end2, 'iso' ); + + if ( + # Start of range 2 is in the range 1. + ( + DateTime->compare($start2, $start1) >= 0 + && DateTime->compare($start1, $end2) <= 0 + ) + || + # End of range 2 is in the range 1. + ( + DateTime->compare($start2, $end1) >= 0 + && DateTime->compare($end1, $end2) <= 0 + ) + || + # Range 2 start before and end after range 1. + ( + DateTime->compare($start1, $start2) < 0 + && DateTime->compare($end1, $end2) > 0 + ) + ) { + return 1; } return; --