2010-08-05 27 views
1

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

回答

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格式。基本上,你必须使用两位数的分钟才能成为有效的输入。

0

为了更灵活地处理您的日期格式,请尝试使用日期时间::格式:: 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)&获得新纪元。