在Perl中解析日期字符串
我想通过试图用Date :: Manip解析它来检查变量$test
是否包含有效的日期格式。当格式为“YYYY/MM/DD”时,它按预期工作。如果我将格式更改为“DD/MM/YYYY”(my $ test =“20/4/2012”),则表示无法正常工作。我尝试了设置为英国日期格式的配置功能,但仍然无法使用。在Perl中解析日期字符串
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";
}
您可以使用Time::ParseDate
它允许你指定它的参数UK
解析器功能做到这一点。
use Time::ParseDate;
my $test="20/4/2012";
$time = parsedate($test, UK => 1);
你的配置函数调用是什么样子的?我可以通过添加这个脚本来工作:
Date_Init("DateFormat=non-US");
ParseDate之前。
非常感谢您的信息。试过Date_Init(“DateFormat =非美国”);它不起作用 – Arav 2012-07-30 05:32:30
让我们把它分解到最低限度。 'perl -MDate :: Manip = ParseDate,Date_Init -e'Date_Init(“DateFormat = non-US”);打印ParseDate(“20/4/2012”);' - - 不起作用? – 2012-07-30 05:43:34
希望(以及在use
添加Date_Init
到导入列表),你已经找到你的解决方案:-)
但对那些通过寻找一些日期解析工具对Perl的利益,我可以强烈推荐核心模块Time::Piece
- 它非常善于研究你的旧日期字符串的含义。
对于您的具体问题,真正的答案是“它取决于您有效的含义”当然。
我想使用manip :: parsedate。非常感谢信息 – Arav 2012-07-30 05:33:02