Ich möchte das Datumsformat für eine Eingabe mithilfe des Formats überprüfen mm/dd/yyyy
.
Ich habe die folgenden Codes auf einer Site gefunden und dann verwendet, aber es funktioniert nicht:
function isDate(ExpiryDate) {
var objDate, // date object initialized from the ExpiryDate string
mSeconds, // ExpiryDate in milliseconds
day, // day
month, // month
year; // year
// date length should be 10 characters (no more no less)
if (ExpiryDate.length !== 10) {
return false;
}
// third and sixth character should be '/'
if (ExpiryDate.substring(2, 3) !== '/' || ExpiryDate.substring(5, 6) !== '/') {
return false;
}
// extract month, day and year from the ExpiryDate (expected format is mm/dd/yyyy)
// subtraction will cast variables to integer implicitly (needed
// for !== comparing)
month = ExpiryDate.substring(0, 2) - 1; // because months in JS start from 0
day = ExpiryDate.substring(3, 5) - 0;
year = ExpiryDate.substring(6, 10) - 0;
// test year range
if (year < 1000 || year > 3000) {
return false;
}
// convert ExpiryDate to milliseconds
mSeconds = (new Date(year, month, day)).getTime();
// initialize Date() object from calculated milliseconds
objDate = new Date();
objDate.setTime(mSeconds);
// compare input date and parts from Date() object
// if difference exists then date isn't valid
if (objDate.getFullYear() !== year ||
objDate.getMonth() !== month ||
objDate.getDate() !== day) {
return false;
}
// otherwise return true
return true;
}
function checkDate(){
// define date string to test
var ExpiryDate = document.getElementById(' ExpiryDate').value;
// check date and print message
if (isDate(ExpiryDate)) {
alert('OK');
}
else {
alert('Invalid date format!');
}
}
Irgendwelche Vorschläge, was falsch sein könnte?
javascript
validation
date
matt
quelle
quelle
{}
Symbolleistenschaltfläche formatieren . Diesmal habe ich es für dich getan. Versuchen Sie auch, einige Informationen zu Ihrem Problem bereitzustellen: Eine Beschreibung, die nicht funktioniert, ist hilfreich, um das Problem zu beheben .Antworten:
Ich denke, Niklas hat die richtige Antwort auf Ihr Problem. Außerdem denke ich, dass die folgende Datumsüberprüfungsfunktion etwas einfacher zu lesen ist:
quelle
parseInt(parts[0], 10)
. Andernfalls wird der September09
als Oktal gelesen und auf 0 analysiertIch würde Moment.js für die Datumsüberprüfung verwenden .
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
Wert ist für strikte Analyse Kredit an @Andrey Prokhorov, was bedeutetquelle
Verwenden Sie zur Validierung den folgenden regulären Ausdruck:
Dies funktioniert für mich für MM / TT / JJJJ.
quelle
Alle Credits gehen an elian-ebbing
Nur für die Faulen hier biete ich auch eine angepasste Version der Funktion für das Format an biete JJJJ-MM-TT an .
quelle
/^(19|20)\d\d$/
, des Monats mit/^(0[0-9]|1[0-2])$/
und des Tages mit/^(0[1-9]|[12][0-9]|3[01])$/
vor dem Parsen getestet habe . Dann hat es geklappt danke./^\d{4}\-\d{1,2}\-\d{1,2}$/
reguläre Ausdruck JJJJ-MM-TT oder JJJJ-MD als wahr, daher wird nur die Länge und nicht jedes einzelne Datumsteil überprüft. Verwenden Sie/^\d{4}\-\d{2}\-\d{2}$/
stattdessen die genaue Länge von JJJJ-MM-TT, ohne zu überprüfen, ob Jahr, Monat und Datum korrekt sind .Du könntest benutzen
Date.parse()
Sie können in der MDN-Dokumentation lesen
Und prüfen Sie, ob das Ergebnis von
Date.parse
isNaN istBitte schauen Sie nach, wann die Verwendung
Date.parse
in MDN empfohlen wirdquelle
Es scheint für Daten im Format MM / TT / JJJJ gut zu funktionieren, Beispiel:
http://jsfiddle.net/niklasvh/xfrLm/
Das einzige Problem, das ich mit Ihrem Code hatte, war die Tatsache, dass:
Hatte ein Leerzeichen in den Klammern vor der Element-ID. Geändert zu:
Ohne weitere Details bezüglich der Art der Daten, die nicht funktionieren, gibt es nicht viel anderes, zu dem man Eingaben machen kann.
quelle
Die Funktion gibt true zurück, wenn die angegebene Zeichenfolge das richtige Format hat ('MM / TT / JJJJ'), andernfalls wird false zurückgegeben. (Ich habe diesen Code online gefunden und ein wenig geändert)
quelle
Hier ist ein Ausschnitt, um das gültige Datum zu überprüfen:
quelle
Es ist in Ordnung, wenn Sie die Validierung TT / MM / JJJJ überprüfen möchten
quelle
Suchen Sie im folgenden Code, mit dem die Datumsüberprüfung für eines der angegebenen Formate durchgeführt werden kann, um Start- / End- und End- / Bis-Daten zu überprüfen. Es könnte einige bessere Ansätze geben, aber ich habe mir diese ausgedacht. Beachten Sie, dass das mitgelieferte Datumsformat und die Datumszeichenfolge Hand in Hand gehen.
Unten ist das HTML-Snippet
quelle
Ich habe den größten Teil dieses Codes aus einem anderen Beitrag gezogen, der hier gefunden wurde . Ich habe es für meine Zwecke geändert. Das funktioniert gut für das, was ich brauche. Es kann in Ihrer Situation helfen.
quelle
Ähnlich wie Elian Ebbing Antwort, aber unterstützen "\", "/", ".", "-", "" Trennzeichen
quelle
quelle
Moment ist wirklich ein guter Moment, um es zu lösen. Ich sehe keinen Grund, Komplexität hinzuzufügen, nur um das Datum zu überprüfen ... werfen Sie einen Blick auf den Moment: http://momentjs.com/
HTML:
Skript :
quelle
Das erste Zeichenfolgendatum wird in das js-Datumsformat konvertiert und erneut in das Zeichenfolgenformat konvertiert. Anschließend wird es mit der ursprünglichen Zeichenfolge verglichen.
quelle
quelle
Es ist ungewöhnlich, einen so alten Beitrag zu einem so grundlegenden Thema zu sehen, mit so vielen Antworten, von denen keine richtig ist. (Ich sage nicht, dass keiner von ihnen funktioniert.)
Date.parse()
sollte nicht für lokale Datumszeichenfolgen verwendet werden. MDN sagt: "Es wird nicht empfohlen, Date.parse zu verwenden, da das Parsen von Zeichenfolgen bis ES5 vollständig implementierungsabhängig war." Die Norm erfordert eine (möglicherweise vereinfachte) ISO 8601-Zeichenfolge. Die Unterstützung für jedes andere Format ist implementierungsabhängig.new Date(string)
verwendet werden, weil das Date.parse verwendet ().Hier ist eine effiziente, präzise Lösung ohne implizite Konvertierungen. Es nutzt die Bereitschaft des Date-Konstruktors, 2018-14-29 als 2019-03-01 zu interpretieren. Es werden einige moderne Sprachfunktionen verwendet, die jedoch bei Bedarf leicht entfernt werden können. Ich habe auch einige Tests aufgenommen.
quelle
Javascript
JQuery
Gibt true für eine gültige Datumszeichenfolge zurück.
quelle
'Invalid Date'
Gibt das Literal für eine ungültige Datumszeichenfolge zurück.Hinweis: Bitte beachten Sie die Kommentare unten.
quelle
new Date("02-31-2000")
gibtThu Mar 02 2000 00:00:00 GMT-0300 (BRT)
.