JavaScript Détection Des Dates De Validité

Double Possible:

La détection d'une “date invalide” instance de Date en JavaScript

J'ai été en utilisant la suite pour détecter une date valide:

var text = $('#Date').val();
var date = Date.parse(text);

if (isNaN(date)) {
      //Invalid date
}

Mais a constaté que la Date.analyser pense que les éléments suivants sont des dates de validité (mm/jj/aaaa)

  • 2/30/2011
  • 11/31/2011

Tout autre moyen de détecter des dates non valides lorsque le nombre de jours dépasse le nombre total de
jours dans le mois?

Mise à JOUR: Un encore plus grand problème, c'est que le plugin jQuery validation ne détecte pas cela comme une date non valide soit!

SOLUTION:

Basé sur @Guffa de commentaires, j'ai créé la fonction suivante pour valider les dates:

function validDate(text) {

    var date = Date.parse(text);

    if (isNaN(date)) {
        return false;
    }

    var comp = text.split('/');

    if (comp.length !== 3) {
        return false;
    }

    var m = parseInt(comp[0], 10);
    var d = parseInt(comp[1], 10);
    var y = parseInt(comp[2], 10);
    var date = new Date(y, m - 1, d);
    return (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d);
}
  • Date.analyser pense pas qu'ils sont corrects, mais il les convertit en date correcte pour vous. E. g. 2/30/2011 se terminera à la 03/02/2011
  • après le vote de près dupe, j'ai réalisé que la condition de la question n'est pas identique, même si c'est lié.
  • Puisque j'avais besoin de l'appui d'entrée dans plusieurs zones géographiques, nous avons mis en place notre propre date de l'analyseur. Le seul moyen que nous avons trouvé pour détecter cette erreur a été de comparer la chaîne de mois que nous avons analysé avec le mois qui vient de l'extérieur de la Date générée
  • Utilisez simplement moment.js comme ça momentjs.com/docs/#/parsing/is-valid <3
  • Double Possible de la Détection d'une "date invalide" instance de Date en JavaScript
InformationsquelleAutor Nick Olsen | 2011-11-11