Comparateur de date en JS
Par karando, jeudi 8 mars 2007 à 12:18 :: Javascript :: #30 :: rss
Voici un petit comparateur de date en format JS
[JS]
//les _mon sont au format yyyy-mm
//les _day sont au format dd
function fct_verif_date_form()
{
//ce sont les champs de mon formulaire
arrdate_mon = document.getElementById('arrdate_mon').value;
arrdate_day = document.getElementById('arrdate_day').value;
depdate_mon = document.getElementById('depdate_mon').value;
depdate_day = document.getElementById('depdate_day').value;
//mise au format correcte pour une date yyyy-mm-dd
date1 = arrdate_mon+'-'+arrdate_day;
date2 = depdate_mon+'-'+depdate_day;
//si la comparaison dit date1<date2
if (comparedate(getDate(date1),getDate(date2))==-1)
{
//calculer la difference en miliseconde
diff = getDate(date1).getTime()-getDate(date2).getTime();
//chercher le nombre de jour
nombrejour = Math.abs(diff/(3600 * 24 * 1000));
//si il est superieur ou egale a 20 jour
if (nombrejour>=20)
{
//erreur
alert ("le nombre de jour de réservation doit être inférieur à 20 jours")
return false;
}
//sinon ok
else
{
return true;
}
}
//si la comparaison dit que date1>date2
else if (comparedate(getDate(date1),getDate(date2))==1)
{
alert ("Les dates ne se suivent pas");
return false;
}
//si la comparaison dit date1 == date2
else
{
alert ("La date est la meme");
return false;
}
}
//On suppose que la date entrée a été validée auparavant
//au format yyyy-mm-dd
function getDate(strDate)
{
//decoupage de la chaine
year = strDate.substring(0,4);
month = strDate.substring(5,7);
day = strDate.substring(8,10);
//mise en forme pour un type date
d = new Date();
d.setDate(day);
d.setMonth(month-1);
d.setFullYear(year);
//retourne la variable
return d;
}
//Return:
// 0 si date_1=date_2
// 1 si date_1>date_2
// -1 si date_1<date_2
function comparedate(date_1, date_2)
{
//calcul la difference des date
diff = date_1.getTime()-date_2.getTime();
//retourne la valeur
return (diff==0?diff:diff/Math.abs(diff));
}
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.