|
Lines 18-25
package Koha::DateUtils;
Link Here
|
| 18 |
|
18 |
|
| 19 |
use Modern::Perl; |
19 |
use Modern::Perl; |
| 20 |
use DateTime; |
20 |
use DateTime; |
| 21 |
use Date::Range; |
|
|
| 22 |
use Date::Simple; |
| 23 |
use C4::Context; |
21 |
use C4::Context; |
| 24 |
use Carp; |
22 |
use Carp; |
| 25 |
|
23 |
|
|
Lines 310-320
sub format_sqldatetime {
Link Here
|
| 310 |
sub date_ranges_overlap { |
308 |
sub date_ranges_overlap { |
| 311 |
my ($start1, $end1, $start2, $end2) = @_; |
309 |
my ($start1, $end1, $start2, $end2) = @_; |
| 312 |
|
310 |
|
| 313 |
my $range1 = Date::Range->new(Date::Simple->new($start1), Date::Simple->new($end1)); |
311 |
$start1 = dt_from_string( $start1, 'iso' ); |
| 314 |
my $range2 = Date::Range->new(Date::Simple->new($start2), Date::Simple->new($end2)); |
312 |
$end1 = dt_from_string( $end1, 'iso' ); |
| 315 |
|
313 |
$start2 = dt_from_string( $start2, 'iso' ); |
| 316 |
if ($range1->overlaps($range2)) { |
314 |
$end2 = dt_from_string( $end2, 'iso' ); |
| 317 |
return $range1->overlap($range2); |
315 |
|
|
|
316 |
if ( |
| 317 |
# Start of range 2 is in the range 1. |
| 318 |
( |
| 319 |
DateTime->compare($start2, $start1) >= 0 |
| 320 |
&& DateTime->compare($start2, $end1) <= 0 |
| 321 |
) |
| 322 |
|| |
| 323 |
# End of range 2 is in the range 1. |
| 324 |
( |
| 325 |
DateTime->compare($end2, $start1) >= 0 |
| 326 |
&& DateTime->compare($end2, $end1) <= 0 |
| 327 |
) |
| 328 |
|| |
| 329 |
# Range 2 start before and end after range 1. |
| 330 |
( |
| 331 |
DateTime->compare($start2, $start1) < 0 |
| 332 |
&& DateTime->compare($end2, $end1) > 0 |
| 333 |
) |
| 334 |
) { |
| 335 |
return 1; |
| 318 |
} |
336 |
} |
| 319 |
|
337 |
|
| 320 |
return; |
338 |
return; |
| 321 |
- |
|
|