2

这个答案中,我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]
您的日期时间与您的模式不匹配

4

1 回答 1

5

非模式字符也很重要。您的日期组件之间有斜线,因此该模式'%m/%d/%Y%n%T'有效,而您的则无效。

请注意,该模式%D也不起作用,因为它是一种快捷方式,%m%d%Y也不包括斜线。

于 2012-08-24T08:14:16.457 回答