Как сравнить две строки на основе даты и времени в perl & php? - PullRequest
2 голосов
/ 11 июля 2011

У меня есть строки в формате (дата-время) - «Пн, 11 июля 2011 11:45:07 +08: 00», мне нужно сравнить такие строки на основе формата даты-времени, чтобы найти самые последние строка. Какой модуль / метод я должен использовать здесь?

Ответы [ 5 ]

4 голосов
/ 11 июля 2011
use DateTime::Format::Strptime qw();

my $time_str = 'Mon, 11 Jul 2011 11:45:07 +08:00';
# your notation of time zone
# does not comply with relevant standards
$time_str    =~ s/([+-]\d\d):(\d\d) \z/$1$2/msx; # kill colon

my $parser   = DateTime::Format::Strptime->new(
    pattern  => '%a, %d %b %Y %T %z',
    locale   => 'en',   # 'Mon', 'Jul' are English
    on_error => 'croak',
);

my $datetime = $parser->parse_datetime($time_str);

# Now you have a DateTime object. To compare,
# use the overloaded relation operators.
# <=> operator/sort function works as well.

if ($datetime < $a_different_datetime) {
    say 'earlier';
}
1 голос
/ 11 июля 2011

Я использую Дата :: Manip в Perl для этого:

use Date::Manip;

my $datestr1 = "Mon, 11 Jul 2011 11:45:07 +08:00";
my $datestr2 = "Mon, 18 Jul 2011 11:45:07 +08:00";

my $date1 = new Date::Manip::Date;
my $date2 = $date1->new_date;
$date1->parse($datestr1);
$date2->parse($datestr2);

my $result = $date1->cmp($date2); # => -1, 0, 1

print $result, "\n";
1 голос
/ 11 июля 2011

Для PHP самым простым способом было бы преобразование временных строк с помощью strtotime () и сравнение целочисленных значений. Самое высокое целое число - самое последнее.

Обратите внимание, что некоторые версии PHP будут предупреждать вас при использовании функций Date, если вы не установили часовой пояс по умолчанию. Вы можете сделать это с date_default_timezone_set("") или php.ini date.timezone = "", со списком поддерживаемых часовых поясов .

0 голосов
/ 11 июля 2011

вы можете попробовать strtotime () на вашей временной отметке. затем просто сравните числа с помощью обычных компараторов.

0 голосов
/ 11 июля 2011

В PHP это называется strtotime ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...