在Perl中,为什么我从parsedate(2010-7-2 13:0:0)和解析(2010-7-2 13:00:0)得到不同的结果?
答案 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)&得到纪元。