Как проверить дату в формате ГГГГ-ММ-ДД на Perl? - PullRequest
0 голосов
/ 11 августа 2009

Связанный / Возможный дубликат: Как проверить даты в Perl?

Я создал сценарий, в котором пользователь должен указать дату начала и окончания при выполнении сценария. Формат даты, введенный пользователем, должен быть только в формате YYYY-MM-DD.

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

пожалуйста, сообщите.

Ответы [ 3 ]

5 голосов
/ 11 августа 2009

Как отмечали другие, это можно сделать с помощью регулярных выражений . Однако, если вы хотите быстро внедрить комплексное и надежное решение, CPAN станет вашим другом.

Эта статья TechRepublic содержит хорошее сравнение модулей даты и времени на CPAN.

Для вашего конкретного использования вы должны рассмотреть Time::Normalize. См. Diagnostics раздел документации.

См. Также Как проверить даты в Perl? в SO.

2 голосов
/ 11 августа 2009

Первый

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

тоже работает.

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

Теперь вам нужно убедиться, что значения являются действительными годами, месяцами и днями.

1 голос
/ 11 августа 2009

Предполагая, что вы имеете в виду

$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$/;
...