У меня есть значение даты и времени в формате «Пт, 1 июля, 05:21:23 2016», как я могу это сравнить?
Мне нужно сделать как if($date1<$date2) { print "do something"! }
Пожалуйста, помогите найти ответ!
У меня есть значение даты и времени в формате «Пт, 1 июля, 05:21:23 2016», как я могу это сравнить?
Мне нужно сделать как if($date1<$date2) { print "do something"! }
Пожалуйста, помогите найти ответ!
Вы можете использовать DateTime::Format::Strptime
для разбора строк в Datetime
, поддерживающие сравнения:
use strict;
use warnings;
use feature 'say';
use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(pattern => '%a %b %d %H:%M:%S %Y');
my $dt1 = $strp->parse_datetime("Fri Jul 1 05:21:23 2016");
my $dt2 = $strp->parse_datetime("Sat Jul 2 05:21:23 2016");
if ($dt1 < $dt2) { # or use DateTime->compare()
say '$dt1 < $dt2';
}
elsif ($dt1 == $dt2) {
say '$dt1 == $dt2';
}
else {
say '$dt1 > $dt2';
}
Используйте Time::Piece, чтобы преобразовать строки в объекты, которые можно сравнивать напрямую.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
my $date1 = 'Fri Jul 1 05:21:23 2016';
my $date2 = 'Thu Jun 30 12:00:00 2016';
my $date_format = '%a %b %d %H:%M:%S %Y';
my $tp1 = Time::Piece->strptime($date1, $date_format);
my $tp2 = Time::Piece->strptime($date2, $date_format);
if ($tp1 < $tp2) {
say "$date1 is before $date2";
} elsif ($tp1 > $tp2) {
say "$date1 is after $date2";
} else {
say "$date1 is the same as $date2";
}
say()
в программе. Также 5.10 была первой версией, включившей Time::Piece в стандартный дистрибутив (конечно, пользователи более ранних версий Perl могут установить его из CPAN). Но главным образом, я полагаю, потому что я считаю Perl 5.10 минимально приемлемой версией для серьезной разработки Perl.
- person Dave Cross; 01.07.2016
Datetime
& Co для манипулирования датой/временем, так как это более универсально. Например, Time::Piece
с радостью примет 'Thu Jul 1 05:21:23 2016'
(обратите внимание на название дня), а Datetime
— нет.
- person Eugene Yarmash; 01.07.2016
Time::Piece
- person Sobrique   schedule 01.07.2016