我有(日期 - 时间)格式的字符串 - “星期一,2011年7月11日11:45:07 +08:00”,我需要根据日期 - 时间格式比较这些字符串,以查找最新的串。我应该在这里使用哪个模块/方法?
答案 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()。然后只需使用普通比较器比较数字。