Snažím sa skontrolovať, či je premenná $test
obsahuje platný formát dátumu pokúšaním saanalyzovať s dátumom :: Manip. Funguje podľa očakávania, ak je formát "YYYY / MM / DD". Ak zmením formát na "DD / MM / YYYY" (môj $ test = "20.4.2012") nefunguje správne. Pokúsil som sa konfigurovať na formát dátumu uk, ale stále to nebolo práca.
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 : $daten";
}
else {
print "Guddate: $daten";
}
odpovede:
1 pre odpoveď č. 1Môžete to urobiť pomocou Time::ParseDate
ktorý vám umožňuje špecifikovať UK
v jeho argumenty na analyzátor funkcie.
use Time::ParseDate;
my $test="20/4/2012";
$time = parsedate($test, UK => 1);
1 pre odpoveď č. 2
Čo vyzeralo vo vašej konfigurácii? Môžem skript do práce pridať takto:
Date_Init("DateFormat=non-US");
pred ParseDate. (A tiež pridanie Date_Init
do zoznamu importu v priečinku use
)
1 pre odpoveď č. 3
Dúfajme, že ste už našli svoje riešenie :-)
Ale v prospech kohokoľvek, kto prechádza hľadaním niektorých nástrojov na analýzu dátumu pre Perl, môžem dôrazne odporučiť jadrový modul Time::Piece
- je to mimoriadne dobré pri spracovaní toho, čo ste mysleli z akéhokoľvek starého reťazca.
Skutočnou odpoveďou na vašu konkrétnu otázku je, samozrejme, "záleží na tom, čo myslíte tým, že platné".