2

Date::Manip で解析して、変数$testに有効な日付形式が含まれているかどうかを確認しようとしています。形式が「YYYY/MM/DD」の場合、期待どおりに機能します。形式を 'DD/MM/YYYY' (my $test="20/4/2012") に変更すると、正しく機能しません。英国の日付形式に設定するための構成機能を試しましたが、それでも機能しませんでした。

use Date::Manip qw(ParseDate );
my $test="20_4_2012";
#my $test="2012_4_20";

$test =~ s/_/\//g;

print $test;

$date=ParseDate($test);

if(!$date) {
  print "baddate : $date\n";
}

else {
  print "Guddate: $date\n";
}
4

3 に答える 3

1

これは、パーサー関数への引数をTime::ParseDate指定できる を使用して行うことができます。UK

use Time::ParseDate; 

my $test="20/4/2012";

$time = parsedate($test, UK => 1);
于 2012-07-30T04:28:17.617 に答える
1

うまくいけば、あなたはすでにあなたの解決策を見つけています:-)

しかし、Perl 用の日付解析ツールを探している人のために、コア モジュールを強くお勧めしTime::Pieceます。これは、古い日付文字列から何を意味するかを理解するのに非常に優れています。

あなたの特定の質問に対する本当の答えは、もちろん「有効とは何を意味するかによって異なります」です。

于 2013-06-11T20:00:55.790 に答える
1

config 関数呼び出しはどのように見えましたか? これを追加することで、スクリプトを機能させることができます:

Date_Init("DateFormat=non-US");

ParseDate の前。(またDate_Init、 のインポート リストに追加しますuse)

于 2012-07-30T04:42:57.500 に答える