|
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script>
//On suppose que la date entrée a été validée auparavant
//au format dd/mm/yyyy
function getDate(strDate){
day = strDate.substring(0,2);
month = strDate.substring(3,5);
year = strDate.substring(6,10);
d = new Date();
d.setDate(day);
d.setMonth(month);
d.setFullYear(year);
return d;
}
//Retorune:
// 0 si date_1=date_2
// 1 si date_1>date_2
// -1 si date_1<date_2
function compare(date_1, date_2){
diff = date_1.getTime()-date_2.getTime();
return (diff==0?diff:diff/Math.abs(diff));
}
</script>
</head>
<body>
Date 1: <input name="d1" id="d1" type="text" value="01/10/2004" /><br/>
Date 2: <input name="d2" id="d2" type="text" value="02/05/2005" />
<p/>
<button onclick="javascript: alert(compare(getDate(document.all('d1').value),getDate(document.all('d2').value)));">Comparer</button>
</body>
</html>
;-) HackTrack |
Mmm il n'y a pas un autre problème aussi ?
d = new Date(); d.setDate(day); d.setMonth(month-1); d.setFullYear(year); return d; Lorsque l'on dit new Date(), cela prend la date du jour. Or si par exemple on est en Février avec 28 jours dans le mois... Si day vaut 31, vu que l'on execute le setDate en premier, la date va valoir 31/02/2006... Qui va etre converti automatiquement en 03/03/2006... Ce qui déjà à partir de là retourne une mauvaise date non ? A ce moment là on peut tout simplement mettre à la place : d = new Date(0); //01/01/1970 Ainsi on est sur. Parce que Janvier est un mois à 31 jours, donc on ne va pas déborder. |
Il faut penser aussi aux années bissextiles.
|
En faisant appel à la méthode parse de l'obejt Date qui récupère le nombre de milliseconde depuis la date de référence de Javascript (env. 1970).
|