Bonjour !
Je me suis concocté une petite fonction en JavaScript afin de vérifier la validité d'une date. Elle fonctionne très bien sous Le Renard, Opera et Chrome, mais pas sous IE 8 (et du coup les versions antérieures je suppose).
Elle peut recevoir la date sous forme de String "YYYY-MM-DD", d'objet Date() ou bien en trois paramètres function(annee, mois, jour).
C'est la récupération sous forme de String qui ne fonctionne pas bien.
J'ai l'impression qu'il ne sait pas comment manipuler mon objet lorsqu'il s'agit d'une instance de Date.
Voici mon code... J'ai mis une date au départ, pour vérifier avec une date dont j'étais sûr, inutile donc d'envoyer des paramètres...
Le plus surprenant est lors de ma demande d'affichage de "typeof(pAnnee) + ' - ' + pAnnee", IE m'affiche comme message : "number - NaN"...
Quelqu'un saurait pourquoi il réagirait d'une telle manière ? Et surtout comment le résoudre ? Devrais-je aller jusqu'à recréer ma propre classe Date ?
Merci d'avance !
Edit : Si vous avez tout lu, merci et bravo !
Ensuite, je viens de découvrir une console de debug dans IE ! Très pratique (enfin... pratique, dirons-nous...). Du coup, le problème vient de quand je fais quelque chose comme ceci :
La console me retourne :
JOURNAL : debug: NaN
Pourtant le test suivant fonctionne :
JOURNAL : debug: 30
Et il semble également réussir la construction de la date étant donné que ce code :
me renvoit:
JOURNAL : debug: Fri Dec 30 16:57:39 UTC+0100 2011
Incompréhension totale... Quelqu'un verrait-il d'où cela pourrait provenir ?
Merci d'avance !
Modifié par Gothor (02 Jan 2012 - 08:54)
Je me suis concocté une petite fonction en JavaScript afin de vérifier la validité d'une date. Elle fonctionne très bien sous Le Renard, Opera et Chrome, mais pas sous IE 8 (et du coup les versions antérieures je suppose).
Elle peut recevoir la date sous forme de String "YYYY-MM-DD", d'objet Date() ou bien en trois paramètres function(annee, mois, jour).
C'est la récupération sous forme de String qui ne fonctionne pas bien.
J'ai l'impression qu'il ne sait pas comment manipuler mon objet lorsqu'il s'agit d'une instance de Date.
Voici mon code... J'ai mis une date au départ, pour vérifier avec une date dont j'étais sûr, inutile donc d'envoyer des paramètres...
function dateIsValid(pDate, pMois, pJour) {
pDate = "2011-12-30";
alert(pDate);
if (isString(pDate)) {
pDate = new Date(pDate);
}
alert(pDate instanceof Date);
var pAnnee = pDate;
if (pDate instanceof Date) {
pJour = pDate.getDate();
alert(pDate.getDate());
pMois = pDate.getMonth();
pAnnee = pDate.getFullYear();
}
alert(typeof(pAnnee) + ' - ' + pAnnee);
if(!isInteger(pAnnee))
return false;
alert('L\'année est valide.');
if(!isInteger(pMois) || pMois < 0 || pMois > 11)
return false;
alert('Le mois est valide.');
var isBissextile = (pAnnee % 4 == 0 && (pAnnee % 100 != 0 || pAnnee % 400 == 0));
var nombreJours = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (pMois == 2 && isBissextile)
nombreJours[1]++;
if(!isInteger(pJour) || pJour < 1 || pJour > nombreJours[pMois])
return false;
return true;
}
Le plus surprenant est lors de ma demande d'affichage de "typeof(pAnnee) + ' - ' + pAnnee", IE m'affiche comme message : "number - NaN"...
Quelqu'un saurait pourquoi il réagirait d'une telle manière ? Et surtout comment le résoudre ? Devrais-je aller jusqu'à recréer ma propre classe Date ?
Merci d'avance !
Edit : Si vous avez tout lu, merci et bravo !
Ensuite, je viens de découvrir une console de debug dans IE ! Très pratique (enfin... pratique, dirons-nous...). Du coup, le problème vient de quand je fais quelque chose comme ceci :
var test = "2011-12-30";
var date = new Date(test);
console.debug(date.getDate());
La console me retourne :
JOURNAL : debug: NaN
Pourtant le test suivant fonctionne :
var date = new Date();
console.debug(date.getDate());
JOURNAL : debug: 30
Et il semble également réussir la construction de la date étant donné que ce code :
var test = "2011-12-30";
var date = new Date();
console.debug(date);
me renvoit:
JOURNAL : debug: Fri Dec 30 16:57:39 UTC+0100 2011
Incompréhension totale... Quelqu'un verrait-il d'où cela pourrait provenir ?
Merci d'avance !
Modifié par Gothor (02 Jan 2012 - 08:54)