Я пытаюсь отсортировать массив дат в хронологическом порядке, используя DateTime
:
use strict;
use warnings;
use Data::Printer;
use Date::Time;
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
pattern => '%D',
time_zone => 'America/New_York',
);
my @dates = (
[1, '5/18/2011'],
[2, '6/18/2011'],
[3, '6/18/2014'],
[4, '6/18/2010'],
);
my @res = sort { date_sort( $a->[1], $b->[1], $strp ) } @dates;
p \@res;
sub date_sort {
my ( $date1, $date2, $strp ) = @_;
my $dt1 = $strp->parse_datetime($date1);
my $dt2 = $strp->parse_datetime($date2);
return DateTime->compare($dt1, $dt2);
}
Вывод :
[
[0] [
[0] 1,
[1] "5/18/2011"
],
[1] [
[0] 2,
[1] "6/18/2011"
],
[2] [
[0] 3,
[1] "6/18/2014"
],
[3] [
[0] 4,
[1] "6/18/2010"
]
]
Ожидаемый результат :
[
[0] [
[0] 4,
[1] "6/18/2010"
],
[1] [
[0] 1,
[1] "5/18/2011"
],
[2] [
[0] 2,
[1] "6/18/2011"
],
[3] [
[0] 3,
[1] "6/18/2014"
]
]