Perl中的Parsedate问题

时间:2010-08-05 00:58:26

标签: perl

在Perl中,为什么我从parsedate(2010-7-2 13:0:0)和解析(2010-7-2 13:00:0)得到不同的结果?

2 个答案:

答案 0 :(得分:5)

2010-7-2 13:0:0字符串格式不正确,实际上根本没有被解析(看起来像)parsedate("2010-7-2")返回的值与parsedate("2010-7-2 13:0:0")相同为了我。

基于the docs,它只是解析YYYY-MM-DD,但根本不解析13:0:0,因为它期望它是HH:MM格式而不是HH:M格式。基本上,您必须使用两位数的分钟才能使其成为有效输入。

答案 1 :(得分:0)

要更灵活地处理日期格式,请尝试使用DateTime :: Format :: Strptime

my $strp = DateTime::Format::Strptime->new(
    pattern   => '%Y-%m-%d %T',
    locale    => 'en_AU',
    time_zone => 'Australia/Melbourne',
);

my $dt1 = $strp->parse_datetime('2010-7-2 13:0:0');
my $date_1 = $strp->format_datetime($dt1);

$ date_1现在转换为格式良好的日期格式" 2010-07-02 13:00:00"。然后你可以调用parsedate($ date_1)&得到纪元。