der folgenden Code läuft auf einem Windows 7-System vor:Datum Validierung mit dem Takt Befehl
% info patchlevel
8.6.4
% clock scan "1995-01-35" -format "%Y-%m-%d"
791856000
% clock format [clock scan "1995-01-35" -format "%Y-%m-%d"] -format "%Y-%m-%d"
1995-02-04
%
ich in diese Situation lief, als ob eine Zeichenfolge ein gültiges Datum war, um zu bestimmen versuchte, erwarte ich den ersten Takt scannen um fehlzuschlagen, da 35 kein gültiger Tag ist, aber was passiert, ist, dass ich ein Datum 35 Tage nach dem 1. Januar bekomme.
In meinem Code vergleiche ich jetzt die Ausgabe des 2. Uhr-Befehls mit dem ursprünglichen Eingang und entscheide, dass die Zeichenfolge nicht wirklich ein gültiges Datum ist, wenn das Ergebnis anders ist.
Gibt es eine bessere Möglichkeit, ein Datum zu validieren und ist dies das erwartete Verhalten des Uhrbefehls, kann ich es nicht finden beschrieben in der Handbuchseite für die Uhr?
Dieser Abschnitt des Handbuchs auf dem neuesten Stand Arithmetik bezieht sich nicht auf das Takt Format-Befehl und Ihre is_valid_date proc ist in der Tat die Methode, die ich mit den Daten zur Validierung endete. – Jackson
Der 'Clock Scan'-Befehl funktioniert auf diese Weise, da er für die Behandlung einer Reihe von Fällen in der realen Welt erforderlich ist, in denen 'clock add' nicht funktioniert. Es ist ziemlich bizarr, aber das ist Termine für Sie: Sie sind bizarr ... –