Ich versuche zu überprüfen, ob eine Variable $test
enthält ein gültiges Datumsformat, indem versucht wirdparse es mit Date :: Manip. Es funktioniert wie erwartet, wenn das Format "YYYY / MM / DD" ist. Wenn ich das Format auf "DD / MM / YYYY" (mein $ test = "20/4/2012") ändere, funktioniert es nicht richtig. Ich habe eine Konfigurationsfunktion für die Einstellung auf britisches Datumsformat versucht, aber immer noch nicht Arbeit.
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";
}
Antworten:
1 für die Antwort № 1Sie können dies mit dem. Tun Time::ParseDate
was Sie angeben können UK
in ihr Argumente an die Parser-Funktion.
use Time::ParseDate;
my $test="20/4/2012";
$time = parsedate($test, UK => 1);
1 für die Antwort № 2
Wie sah der Aufruf Ihrer Konfigurationsfunktion aus? Ich kann Ihr Skript zum Laufen bringen, indem ich Folgendes hinzufüge:
Date_Init("DateFormat=non-US");
vor dem ParseDate. (Und auch hinzufügen Date_Init
zur Importliste in der use
)
1 für die Antwort № 3
Hoffentlich hast du schon deine Lösung gefunden :-)
Aber für alle, die auf der Suche nach Perl-Tools für die Datumsanalyse sind, kann ich das Kernmodul wärmstens empfehlen Time::Piece
- Es ist wahnsinnig gut, herauszufinden, was du von einer alten Datumszeichenkette meinst.
Die wirkliche Antwort auf Ihre spezifische Frage ist natürlich "es kommt darauf an, was Sie mit" meinen ".