Je souhaite valider le format de la date sur une entrée en utilisant le format mm/dd/yyyy
.
J'ai trouvé les codes ci-dessous dans un site, puis je les ai utilisés mais cela ne fonctionne pas:
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!');
}
}
Une suggestion sur ce qui pourrait ne pas aller?
{}
bouton de la barre d'outils. Je l'ai fait pour toi cette fois. Essayez également de fournir des informations sur votre problème: une description ne fonctionne pas est une solution utile pour résoudre le problème.Réponses:
Je pense que Niklas a la bonne réponse à votre problème. En plus de cela, je pense que la fonction de validation de date suivante est un peu plus facile à lire:
la source
parseInt(parts[0], 10)
. Sinon, septembre09
est lu comme un octal et analyse à 0J'utiliserais Moment.js pour la validation de la date.
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
la valeur est pour l'analyse stricte du crédit à @Andrey Prokhorov, ce qui signifiela source
Utilisez l'expression régulière suivante pour valider:
Cela fonctionne pour moi pour MM / jj / aaaa.
la source
Tous les crédits vont à elian-ebbing
Juste pour les paresseux ici, je propose également une version personnalisée de la fonction pour le format aaaa-mm-jj .
la source
/^(19|20)\d\d$/
, le mois avec/^(0[0-9]|1[0-2])$/
et le jour avec/^(0[1-9]|[12][0-9]|3[01])$/
avant l'analyse. Ensuite, cela a fonctionné grâce./^\d{4}\-\d{1,2}\-\d{1,2}$/
validera aaaa-mm-jj ou aaaa-md comme vrai, donc elle ne valide que la longueur et non chaque partie de date individuelle. Pour une longueur précise de aaaa-mm-jj sans vérifier que l'année, le mois et la date sont corrects, utilisez à la/^\d{4}\-\d{2}\-\d{2}$/
place.Vous pourriez utiliser
Date.parse()
Vous pouvez lire dans la documentation MDN
Et vérifiez si le résultat de
Date.parse
isNaNVeuillez jeter un oeil à quand est recommandé d'utiliser
Date.parse
dans MDNla source
Cela semble fonctionner correctement pour les dates au format mm / jj / aaaa, par exemple:
http://jsfiddle.net/niklasvh/xfrLm/
Le seul problème que j'ai eu avec votre code était le fait que:
Il y avait un espace entre les crochets, avant l'ID d'élément. Changé en:
Sans plus de détails sur le type de données qui ne fonctionnent pas, il n'y a pas grand-chose d'autre à donner.
la source
La fonction retournera true si la chaîne donnée est au bon format ('MM / JJ / AAAA') sinon elle retournera false. (J'ai trouvé ce code en ligne et je l'ai un peu modifié)
la source
Voici un extrait de code pour vérifier la date de validité:
la source
C'est ok si vous voulez vérifier valider jj / MM / aaaa
la source
Trouvez dans le code ci-dessous qui permet d'effectuer la validation de date pour n'importe quel format fourni pour valider les dates de début / de et de fin / à. Il pourrait y avoir de meilleures approches, mais cela a été proposé. Notez que le format de date fourni et la chaîne de date vont de pair.
Ci-dessous l'extrait de code HTML
la source
J'ai tiré la plupart de ce code d'un autre article trouvé ici . Je l'ai modifié pour mes besoins. Cela fonctionne bien pour ce dont j'ai besoin. Cela peut aider avec votre situation.
la source
Similaire à la réponse d'Elian Ebbing, mais prend en charge les délimiteurs "\", "/", ".", "-", ""
la source
la source
Le moment est vraiment bon pour le résoudre. Je ne vois pas de raison d'ajouter de la complexité juste pour vérifier la date ... jetez un œil au moment: http://momentjs.com/
HTML:
Script:
la source
La première date de chaîne est convertie au format de date js et reconvertie en format de chaîne, puis elle est comparée à la chaîne d'origine.
la source
la source
Il est inhabituel de voir un article si ancien sur un sujet aussi basique, avec autant de réponses, aucune d'elles n'est correcte. (Je ne dis pas qu'aucun d'entre eux ne fonctionne.)
Date.parse()
ne doit pas être utilisé pour les chaînes de date locales. MDN déclare: "Il n'est pas recommandé d'utiliser Date.parse car jusqu'à ES5, l'analyse des chaînes dépendait entièrement de l'implémentation." La norme requiert une chaîne ISO 8601 (potentiellement simplifiée); la prise en charge de tout autre format dépend de l'implémentation.new Date(string)
être utilisé, car cela utilise Date.parse ().Voici une solution efficace et concise sans conversions implicites. Il tire parti de la volonté du constructeur de Date d'interpréter le 2018-14-29 comme le 2019-03-01. Il utilise quelques fonctionnalités de langage moderne, mais celles-ci sont facilement supprimées si nécessaire. J'ai également inclus quelques tests.
la source
Javascript
JQuery
renvoie true pour une chaîne de date valide.
la source
renvoie le littéral
'Invalid Date'
pour toute chaîne date_string non valide.Remarque: veuillez consulter les commentaires ci-dessous.
la source
new Date("02-31-2000")
donneThu Mar 02 2000 00:00:00 GMT-0300 (BRT)
.