如何在Perl中验证YYYY-MM-DD格式的日期?

时间:2009-08-11 13:19:07

标签: perl date validation

  

相关/可能重复:How can I validate dates in Perl?

我创建了一个脚本,用户在执行脚本时需要提供开始和结束日期。用户输入的日期格式应仅为YYYY-MM-DD格式。

start_date = $ARGV[0];
end_date = $ARGV[1];

请告知。

3 个答案:

答案 0 :(得分:5)

正如其他人所说,这可以通过regular expressions来完成。但是,如果您想快速实施完整而强大的解决方案,那么CPAN就是您的朋友。

This TechRepublic article包含对Date&的良好比较CPAN上的时间模块。

对于您的特定用途,您应该考虑Time::Normalize。请参阅其文档的Diagnostics部分。

另请参阅SO上的How can I validate dates in Perl?

答案 1 :(得分:2)

首先,

my ($start_date, $end_date) = @ARGV;

也有效。

if ( $var =~ /^(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})$/ ) {
    # see %+ in perldoc perlvar

现在,您需要确保这些值是有效的年,月和日。

答案 2 :(得分:1)

假设你的意思是

$start_date = $ARGV[0];
$end_date = $ARGV[1];

即。语法上有效的Perl代码,那么你可能会做类似

的事情
die "Please enter dates in YYYY-MM-DD format\n"
    unless $start_date =~ /^\d{4}-\d\d-\d\d$/;
die "Please enter dates in YYYY-MM-DD format\n"
    unless $end_date =~ /^\d{4}-\d\d-\d\d$/;