相關/可能重複:How can I validate dates in Perl?如何在Perl中驗證YYYY-MM-DD格式的日期?
我創建了一個腳本,啓動,需要在執行腳本被用戶給出結束日期。用戶輸入的日期格式應僅爲YYYY-MM-DD
格式。
start_date = $ARGV[0];
end_date = $ARGV[1];
請指教。
相關/可能重複:How can I validate dates in Perl?如何在Perl中驗證YYYY-MM-DD格式的日期?
我創建了一個腳本,啓動,需要在執行腳本被用戶給出結束日期。用戶輸入的日期格式應僅爲YYYY-MM-DD
格式。
start_date = $ARGV[0];
end_date = $ARGV[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$/;
首先,
my ($start_date, $end_date) = @ARGV;
工作過。
if ($var =~ /^(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})$/) {
# see %+ in perldoc perlvar
現在,您需要確保這些值是有效的年,月和日。
正如其他人所指出的,這可能是與regular expressions來完成。但是,如果您想快速實施完整而強大的解決方案,那麼CPAN就是您的朋友。
This TechRepublic article包含一個很好的比較日期& CPAN上的時間模塊。
對於您的特定用途,您應該考慮Time::Normalize
。請參閱其文檔的Diagnostics
部分。
另請參閱SO上的How can I validate dates in Perl?。
您應該注意,命名捕獲需要Perl 5.10和(可能)爲舊版本提供回退。 – 2009-08-11 15:55:48