Wie um zu überprüfen, ob ein string eine rechtliche "dd/mm/yyyy" das Datum?
Gegeben ein string str
, wie könnte ich überprüfen, ob es in der dd/mm/yyyy
- format und enthält eine juristische Datum ?
Einige Beispiele:
bla bla //false
14/09/2011 // true
09/14/2011 //false
14/9/2011 //false
1/09/2011 //false
14/09/11 //false
14.09.2011 //false
14/00/2011 //false
29/02/2011 //false
14/09/9999 // true
InformationsquelleAutor Misha Moroshko | 2011-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: genau die Lösung, die unten
Konnten Sie so etwas tun, aber mit einem genaueren Algorithmus für Tag Validierung:
http://jsfiddle.net/aMWtj/
Datum überprüfung alg.: http://www.eee.hiflyers.co.uk/ProgPrac/DateValidation-algorithm.pdf
Exakte Lösung: Funktion zurückgibt, die eine Analysierte Datum oder null, je nachdem, genau auf Ihre Anforderungen.
http://jsfiddle.net/aMWtj/2/
In Fall müssen Sie die Funktion return true/false und für einen yyyy/mm/dd format
parseInt
. I. e.,d=+t[1]
. Vermeidet Probleme wie, wo man vergessen hat, gehören die radix auf den Tag der Berechnung werden (besonders problematisch, wenn wir wissen, dass der Tag möglicherweise mit führenden Nullen).hmm.. guter Punkt 🙂
InformationsquelleAutor
Versuchen -
Gibt es weitere Infos in dieser Frage - Parse-DateTime-string in JavaScript (der code in meiner Antwort ist stark beeinflusst von der verlinkten Frage)
Demo - http://jsfiddle.net/xW2p8/
BEARBEITEN
Aktualisierte Antwort, versuchen Sie -
Diese Funktion übergibt alle Testfälle. So weit ich bin mir bewusst, Adam Jurczyk gepostet hatte eine genaue Antwort gut, bevor ich korrigiert, meine ursprüngliche Antwort ist falsch. Er verdient Anerkennung dafür.
Demo - http://jsfiddle.net/2r6eX/1/
Das ist hässlich, dass es manuell zerlegt einen Datums-string (basierend auf Kultur-spezifische Annahmen); nicht zu erwähnen, es erfordert die Behandlung von Ausnahmen.
die Frage besagt, dass das Datum im "dd/mm/yyyy" - format. Also ich dachte, es war sicher zu stellen, dass diese Annahme.
Hoppla, Es scheint, ich mis-erkannte die Sprache, sorry. Für JS ist dies eine geeignete Lösung! Bekommt mein up-vote.
lol, wie es ist, dass solche bad Antwort (es scheitert mindestens die Hälfte der test-Fälle), hat die meisten upvotes?
InformationsquelleAutor
können Sie reguläre exp zu validieren Datum .
versuchen Sie es so :
Hinweis: dies funktioniert nur für dd/mm/yyyy
für die exakte übereinstimmung Ihrer Anforderung verwenden
ich gab nur ein Beispiel,dass dieser Weg, den er ansprechen kann, ist nicht die exakte Lösung
können die regex nach Ihrem Bedarf.
InformationsquelleAutor
Werde ich die Antwort auf eine andere Frage, wie Misha Moroshko ist bereits gut beantwortet: HTML5 nutzen. Das heißt, auf der Annahme, dass die Saiten in Frage, die als Eingaben des Benutzers über einen Web-browser, schlage ich vor, dass die Einträge erhalten
Ich erkennen, dass nicht alle Browser wahrscheinlich wird interpret "Datum" in einer Weise, die konsequent durchsetzt Gültigkeit. Es ist die richtige Sache zu tun, obwohl, wird sicherlich verbessern, wie die Zeit vergeht, und es könnte gut sein, gut genug, in einem bestimmten Kontext auch jetzt noch einfach zu beseitigen die Notwendigkeit der Validierung der Datum-string nach der Tat.
InformationsquelleAutor
Persönlich, ich denke, die beste Lösung wäre das ändern der Benutzeroberfläche, verwenden Sie Dropdown-Listen für Monat und gegebenenfalls Tag der Auswahl.
Versuchen herauszufinden, ob 1/2/2001 ist der 2. Januar oder 1. Februar ausschließlich auf das input-string ist unmöglich.
InformationsquelleAutor
Jüngste Entdeckung: können Sie date.js lib, es fügt Funktion Datum.parseExact so können Sie nur
Date.parseExact(dateString,"dd/MM/yyyy")
. Es schlägt fehl, wenn Monat ist00
, aber seine immer noch nützlich.InformationsquelleAutor
InformationsquelleAutor