2

この回答からDateTime::Format::Strptime、文字列から日付を取得するために使用しています。

私は次のパターンを使用しています:%m%d%Y%n%T。これは一致している必要があります

  • %m:月番号(01-12)。これにより、1桁の数値も解析されます。
  • %d:月の日(01-31)。これにより、1桁の数値も解析されます。
  • %Y:世紀を含む年(たとえば、1991年)。
  • %n:任意の空白。
  • %T:と同等%H:%M:%S
    • %H:時間(00-23)。これにより、1桁の数値も解析されます。
    • %M:分(00-59)。これにより、1桁の数値も解析されます。
    • %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);

出力:

日付:[2011年5月18日14:14:05]
日時がパターンと一致しません

4

1 に答える 1

5

非パターン文字も重要です。日付コンポーネントの間にスラッシュがあるため、パターン'%m/%d/%Y%n%T'は機能しますが、機能しません。

%Dパターンはのショートカットで%m%d%Yあり、スラッシュも含まれていないため、このパターンも機能しないことに注意してください。

于 2012-08-24T08:14:16.457 に答える