Calcul de date et de durée
Calculer une date ou (et) une durée dans une page HTML peut souvent être utile. Voici un exemple simple: calcul des dates de fin de garantie d'un ensemble multimédia.
Durée de validité de nos services
Formulaire à remplir
NB: les textes en rouge sont des commentaires à supprimer dans le code html
<script language="JavaScript"> <!-- debut du script
On déclare les variables et les tableaux:
var HerDate la date entrée par
l'utilisateur
var dpaJJ la date qui va être calculée, le jour
var dpaMM le mois
var dpaAAAA l'année
function RetourneDate(I)
{ c'est la fonction principale qui va calculer la date en fonction de I (nombre de jours à ajouter à la date entrée)
ecart = I * 86400 * 1000; le calcul se fait en milliémes de seconde
!!
dpaDate= HerDate.getTime() + ecart;
dpaDateS=dpaDate/1000;
jour=Math.floor(dpaDateS/86400) -5on raméne au nombre de jours, on
enléve 5 (années bisextiles)
annee=Math.floor(jour/365) puis au nombre d'années
restann=(jour/365) - annee le reste
mois=Math.floor(restann*12) idem pour le mois
restmoi = (restann*12) - mois
jours=Math.floor(restmoi * 30) et les jours
mois=Math.floor(mois) on arondi le mois
attention, si le mois ou le jour est
égal à zéro:
if (jours==0) {
jours=1;}
if (mois==0) {
mois=12
annee=annee-1;
}
notre date
dpaJJ=jours
dpaMM=mois
dpaAAAA=annee+1970
return
}
function calculvar(form)
{ on récupére la date entrée dans le formulaire
RJour =form.regleJour.value
RMois =form.regleMois.selectedIndex+1
RAnnee =form.regleAnnee.value
HerDate=new Date(RAnnee, RMois, RJour)
HerDate2=new Date(RAnnee, RMois-1, RJour)
afich()
}
function afich(){
Affichage des résultats dans une fenêtre externe (NB: netscape ne
peut faire l'affichage dans la même fenêtre contrairement à internet explorer)
correc=open("","correction","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=1,resizable=1,width=500,height=200");
correc.document.write('<body BGCOLOR="#FFFFCC" TOPMARGIN="3"
TEXT="#000000" LINK="#0033FF"LINK="#FF0000"
ALINK="#006600"><p align="center" >Vos garanties</p>')
correc.document.write('<p>Date achat :
'+RJour+'/'+RMois+'/'+RAnnee+'<br>') rappel de la date entrée
correc.document.write('<hr><p align="center"><strong>Les
résultats de nos calculs</p>')
SysDate = new Date() on s'enquiert de la date systéme
Calcul de la durée entre la date
entrée et la date du jour, script superposable à celui de la fonction RetourneDate
difference= Math.abs(SysDate.getTime() - HerDate2.getTime())
difference=Math.floor(difference / 1000)
nbj = Math.floor(difference / 86400 )
nbs = Math.floor(nbj / 7)
nbsj = nbj - (nbs*7)
v = nbj - 13
nmois = Math.floor(v/30) +1
nba= Math.floor(nbs/52)
cnba=nba*52
nbs2=nbs-cnba
correc.document.write('<p>Cela fait donc :'+nba+' années '+nbs2+' semaines et
'+nbsj+' jours que vous acheté cet ensemble<br><BR>');
RetourneDate(365)
correc.document.write("Votre ordinateur est garanti un an soit jusqu'au :
"+dpaJJ+'/'+dpaMM+'/'+dpaAAAA+'<br><br>');
la garantie étant de 1 an, on entre 365 jours comme paramétre pour
la fonction RetourneDate, et on
affiche
et ainsi de suite
RetourneDate(1095)
correc.document.write("Votre écran est garanti trois ans soit jusqu'au :
"+dpaJJ+'/'+dpaMM+'/'+dpaAAAA+'<br><br>');
RetourneDate(547)
correc.document.write("Votre imprimante est garanti 18 mois soit jusqu'au :
"+dpaJJ+'/'+dpaMM+'/'+dpaAAAA+'<br><br>');
RetourneDate(91)
correc.document.write("Hot line gratuite pendant 3 mois soit jusqu'au :
"+dpaJJ+'/'+dpaMM+'/'+dpaAAAA+'<br><br>');
}
</script>
<p align="center"><font color="#0000FF" size="4"><strong>Formulaire à remplir</strong></font></p>
le formulaire
<form method="post"
name="form1">
<table border="1" width="100%">
<tr>
<td width="45%"><font face="Times
New Roman" size="3"><strong>Date de votre achat:
</strong></font></td>
<td width="55%"><strong><input
type="text" size="2" maxlength="2" name="regleJour"
Le nom de chaque champ importe peu mais DOIT correspondre à
ceux entrés dans la fonction Calculvar !!!!! ils sont ici notés en bleu foncé
language="JavaScript" le jour est incorrect
!") return }"> <font size="2">/
</font><select
name="regleMois"
size="1">
<option value="01"> Janvier
</option>
<option value="02"> Février
</option>
<option value="03"> Mars
</option>
<option value="04"> Avril
</option>
<option value="05"> Mai
</option>
<option value="06"> Juin
</option>
<option value="07"> Juillet
</option>
<option value="08"> Aout
</option>
<option value="09"> Septembre
</option>
<option value="10"> Octobre
</option>
<option value="11"> Novembre
</option>
<option value="12"> Décembre
</option>
</select> <input type="text"
size="4" name="regleAnnee"
value="1999"> </strong></td>
</tr>
</table>
<div align="center"><center><p> <input
type="reset" name="B2" value="Effacer"> <input
type="button" name="B1" value="Valider"
onclick="calculvar(form1)"> dés la validation du
formulaire, appel du programme
</p>
</center></div>
</form>
Si vous utilisez ce script, donnez l'adresse de votre page et elle apparaitra ici