在这个答案中,我使用DateTime::Format::Strptime从字符串中获取日期。
我使用以下模式:%m%d%Y%n%T。这个应该是匹配
%m:月份数(01-12).这也将解析单数数字。%d:月中的一天(01-31).这也将解析单数数字。%Y:年份,包括世纪(例如,1991年)。%n:任意空格。%T:等效于%H:%M:%S:%H:时间(00-23).这也将解析单数数字。%M:分钟(00-59).这也将解析单数数字。%S:第二个(0-60;60 )可能发生在闰秒.见DateTime::LeapSecond)。
但是,对于输入:05/18/2011 14:14:05,它失败了,错误:
您的日期时间与您的模式不匹配。
据我所见,我的模式与输入模式相匹配。我哪里出问题了?
有关守则如下:
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new(
pattern => '%m%d%Y%n%T',
time_zone => 'local',
on_error => 'croak',
);
my $dt = $fields->[1] ;
print "Date:[$dt]\n";
my $dateopen = $format->parse_datetime($dt);输出:
日期:05/18/2011 14:14:05 您的日期时间与您的模式不匹配。
发布于 2012-08-24 08:14:16
非模式字符也很重要。您的日期组件之间有斜杠,因此模式'%m/%d/%Y%n%T'可以工作,而您的模式不能工作。
注意,模式%D也不能工作,因为它是%m%d%Y的快捷方式,也不包括斜杠。
https://stackoverflow.com/questions/12105406
复制相似问题