如何比较Perl& amp;中基于日期时间的两个字符串PHP的?

时间:2011-07-11 08:04:52

标签: php perl

我有(日期 - 时间)格式的字符串 - “星期一,2011年7月11日11:45:07 +08:00”,我需要根据日期 - 时间格式比较这些字符串,以查找最新的串。我应该在这里使用哪个模块/方法?

5 个答案:

答案 0 :(得分:4)

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 :(得分:1)

对于PHP,最简单的方法是使用strtotime()转换时间字符串并比较整数值。最高整数是最新的。

请注意,如果您未设置默认时区,某些版本的PHP会在使用日期函数时发出警告。您可以使用date_default_timezone_set("")或php.ini的date.timezone = ""list of supported timezones进行此操作。

答案 2 :(得分:1)

我在Perl中使用Date::Manip

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";

答案 3 :(得分:0)

在PHP中,它被称为strtotime()

答案 4 :(得分:0)

你可以在你拥有的时间戳上尝试strtotime()。然后只需使用普通比较器比较数字。