JavaScript – Valider Date

J'ai un champ de texte HTML. Je souhaite valider via JavaScript que la valeur saisie est une date valide sous la forme "MM / JJ / YY" ou "MM / D / YY" ou "MM / JJ / AAAA" ou "MM / D / AAAA". Y at-il une fonction qui fait cela?

J'ai supposé qu'il y avait quelque chose comme isNaN mais je ne vois rien. Est-il vrai que JavaScript ne peut pas valider les dates?

Est-il vrai que JavaScript ne peut pas valider les dates?

Non.

Y at-il une fonction qui fait cela?

Non.

Vous devrez écrire votre propre fonction de validation pour analyser le format de la date (regex vient à l'esprit) et ensuite déterminer si elle est valide dans vos critères spécifiques.

Vous pouvez utiliser l'objet Date de javascript pour vérifier la date. Étant donné que l'objet de la date permet de se déplacer avec les valeurs du mois et du jour (par exemple, le 32 mars serait corrigé jusqu'au 1er avril), vous pouvez simplement vérifier que la date que vous créez correspond à celle que vous avez mise. Vous pourriez raccourcir si vous le souhaitez , Mais il est plus long pour plus de clarté.

function checkDate(m,d,y) { try { // create the date object with the values sent in (month is zero based) var dt = new Date(y,m-1,d,0,0,0,0); // get the month, day, and year from the object we just created var mon = dt.getMonth() + 1; var day = dt.getDate(); var yr = dt.getYear() + 1900; // if they match then the date is valid if ( mon == m && yr == y && day == d ) return true; else return false; } catch(e) { return false; } } 

Consultez http://momentjs.com/ . En l'utilisant, cet extrait

Moment (yourCandidateString, 'MM-DD-AAAA'). IsValid ()

Devrait faire le travail.

Si vous souhaitez vous aventurer dans les domaines de JQuery, il existe de nombreux plugins de validation incluant la validation de la date. Ce plugin est celui que j'ai utilisé à plusieurs reprises et m'a bien servi.

J'utilise Bootstrap Datepicker. L'une des options avec la zone de texte désactivée devrait faire l'affaire.

http://www.eyecon.ro/bootstrap-datepicker/

 <input type="text" id="dateinput"/> <script type="text/javascript"> $(#"dateinput").datepicker({ buttonImage: "images/calendar.png", dateFormat: "yyyy-MMM-dd" }); function validateDate() { if ($(#"dateinput").val().trim() == "") { // Is a blank date allowed? return true; } var oldVal = $(#"dateinput").val(); // Current value in textbox // Now use jQueryUI datepicker to try and set the date with the current textbox value $(#"dateinput").datepicker("setDate",$(#"dateinput").val()); // Check if the textbox value has changed if (oldVal != $(#"dateinput").val()) { // The datepicker will set something different if the date is invalid $(#"dateinput").val(oldVal); // Set the textbox back to the invalid date alert ("date was invalid"); return false; } else { // If nothing changed, the date must be good. return true; } } </script> 

Il ne semble pas y avoir de fonction de build-in qui fait cela. Cependant, ce code est probablement ce que vous recherchez:

 <script type="text/javascript"> /**-------------------------- //* Validate Date Field script- By JavaScriptKit.com //* For this script and 100s more, visit http://www.javascriptkit.com //* This notice must stay intact for usage ---------------------------**/ function checkdate(input){ var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity var returnval=false if (!validformat.test(input.value)) alert("Invalid Date Format. Please correct and submit again.") else{ //Detailed check for valid date ranges var monthfield=input.value.split("/")[0] var dayfield=input.value.split("/")[1] var yearfield=input.value.split("/")[2] var dayobj = new Date(yearfield, monthfield-1, dayfield) if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)) alert("Invalid Day, Month, or Year range detected. Please correct and submit again.") else returnval=true } if (returnval==false) input.select() return returnval } </script> 

Source: http://www.javascriptkit.com/script/script2/validatedate.shtml

Avez-vous cherché pour quelque chose comme la validation de la date de javascript ? Il présente de bonnes informations et un exemple de code de travail ici .

Je vous suggère quelques solutions.

  1. Guider l'entrée de l'utilisateur avec un sélecteur de date. De cette façon, vous pouvez contrôler le format d'entrée. JQueryui datepicker est une application populaire.

  2. Utilisez une bibliothèque js pour gérer le type de données datetime (pas un type de données réel dans Javascript !!). Je vous suggère date.js.

C'est ce que j'utilise pour valider une date.

Date.parse renvoie NaN pour les dates non valides.

Cela prend en charge les formats date-seulement et date + heure.

J'espère que cela t'aides.

 var msg; var str = "2013-12-04 23:10:59"; str = "2012/12/42"; var resp = Date.parse(str); if(!isNaN(resp)) { msg='valid date'; } else { msg='invalid date'; } console.log(msg);