2

我试图$test通过尝试使用 Date::Manip 解析变量来检查变量是否包含有效的日期格式。当格式为 'YYYY/MM/DD' 时,它按预期工作。如果我将格式更改为“DD/MM/YYYY”(我的 $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

你的配置函数调用是什么样的?我可以通过添加这个来让你的脚本工作:

Date_Init("DateFormat=non-US");

在 ParseDate 之前。(并且还添加Date_Init到中的导入列表中use

于 2012-07-30T04:42:57.500 回答
1

希望您已经找到了解决方案 :-)

但是为了任何通过寻找 Perl 日期解析工具的人的利益,我强烈推荐核心模块Time::Piece——它非常擅长从任何旧的日期字符串中找出你的意思。

当然,对您的具体问题的真正答案是“这取决于您所说的有效”。

于 2013-06-11T20:00:55.790 回答
1

您可以使用Time::ParseDate允许您UK在解析器函数的参数中指定它来执行此操作。

use Time::ParseDate; 

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

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