У меня есть набор временных диапазонов, и мне нужно получить количество дней из этого набора. Я сделал это с DateTime::Span
следующим образом:
use DateTime;
use DateTime::Span;
sub printHash {
my $hash = shift;
foreach my $key (keys %{$hash}) {
print "$key: $hash->{$key}\n";
}
}
$date1 = DateTime->new( year => 2002, month => 3, day => 11 );
$date2 = DateTime->new( year => 2002, month => 4, day => 12 );
$date3 = DateTime->new( year => 2003, month => 8, day => 26 );
$date4 = DateTime->new( year => 2003, month => 9, day => 15 );
$date5 = DateTime->new( year => 2004, month => 7, day => 6 );
$date6 = DateTime->new( year => 2004, month => 10, day => 15 );
$set1 = DateTime::Span->from_datetimes( start => $date1, end => $date2 );
$set2 = DateTime::Span->from_datetimes( start => $date3, end => $date4 );
$set3 = DateTime::Span->from_datetimes( start => $date5, end => $date6 );
$set123 = $set1->union( $set2, $set3 );
printHash(\%$set123);
#--------------------------------
set123:
set: [2002-03-11T00:00:00..2002-04-12T00:00:00],[2003-08-26T00:00:00..2003-09
T00:00:00],[2004-07-06T00:00:00..2004-10-15T00:00:00]
Есть ли способ извлечь количество дней в этом $set123
? Большое спасибо!
Обновление: Я могу сделать это с delta_days
, но на самом деле мне нужен СОЮЗ из диапазонов времени, чтобы найти количество дней в этом наборе СОЮЗ. Я считаю, DateTime::Span
хорошо работает, чтобы найти СОЮЗ, но мне просто нужно знать, как извлечь количество дней в нем. Поскольку мне нужно решение в спешке, пожалуйста, помогите! Спасибо!