Calcul du jour précédent et du jour suivant

Contenu du snippet

Ce Javascript permet de donner le jour précédent et le jour suivant selon une date. Il tient compte des années bisextiles.

Ce script affiche dans une autre frame une page de la forme "yyyy-mm-jj.htm"
(très pratique lors de l'affichage de résultats de traitement quotidien en HTML).

Je me suis inspiré d'un code présent sur ce site mais je ne me souviens plus lequel: merci quand même à celui qui se reconnaitra :)

Source / Exemple :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Date</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="Javascript">
<!--
var currjour= "00";
var currmois= "00";
var curran= "00";

function init() {
	madate = new Date();
	currjour = madate.getDate();
	currmois = madate.getMonth();
	curran = madate.getYear();
}

function PrevPage(curran,currmois,currjour) 
{
	var jour;
	var mois;
	var an;
	var curjour = parseInt(currjour);
	var curmois = parseInt(currmois);
	var curan = parseInt(curran);
	var fev;
	if (curan%4 == 0 && curan%100 !=0 || curan%400 == 0) {
		fev = 29;
	} else {
		fev = 28;
	}
	// Nombre de jours pour chaque mois
	var nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	if (curmois == 1) { 
		if (curjour == 1) {
			an = curan - 1;
			mois = 12;
			jour = nbJours[mois-1]; // mois en cours
		} else { 
			an = curan;			
			jour = nbJours[curmois-2]; // mois précédent
			mois = curmois;
		}
	} else {
		if (curjour == 1) {
			an = curan;
			mois = curmois - 1;
			jour = nbJours[curmois-2]; // mois précédent
		} else { 
			jour = curjour - 1;
			mois = curmois;
			an = curan;
		}
	} 
AffichRes(an,mois,jour);
}

function NextPage(curran,currmois,currjour) 
{
	var jour;
	var mois;
	var an;
	var curjour = parseInt(currjour);
	var curmois = parseInt(currmois);
	var curan = parseInt(curran);
	var fev;
	if (curan%4 == 0 && curan%100 !=0 || curan%400 == 0) {
		fev = 29;
	} else {
		fev = 28;
	}
	var nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	if (curmois == 12) { //décembre
		if (curjour == nbJours[curmois-1]) { // dernier jour du mois
			an = curan + 1;
			mois = 1;
			jour = 1;
		} else { 
			an = curan;			
			jour = curjour + 1;
			mois = curmois;
		}
	} else {
		if (curjour == nbJours[curmois-1]) {
			an = curan;
			mois = curmois + 1;
			jour = 1; // mois précédent
		} else { 
			jour = curjour + 1;
			mois = curmois;
			an = curan;
		}
	} 
AffichRes(an,mois,jour);
}

function AffichRes(an,mois,jour)
{
		var URL= "";
		document.form1.selectannee.value = an;
		document.form1.selectmois.value = mois;
		document.form1.selectjour.value = jour;
if ((mois == 1) || (mois == 2) || (mois == 3) || (mois == 4) || (mois == 5) || (mois == 6) || (mois == 7) || (mois == 8) || (mois == 9)) {
	mois = "0" + mois;
} 
		if ((jour == 1) || (jour == 2) || (jour == 3) || (jour == 4) || (jour == 5) || (jour == 6) || (jour == 7) || (jour == 8) || (jour == 9)) {
			jour = "0" + jour;
			} 
		URL = URL.concat(an,"-", mois,"-", jour, ".htm");
		alert(URL);
		parent.frames["mainFrame"].location.href = URL; 
}
// -->
</script>
</head>

<BODY onLoad="init();">
<div align="center">
  <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong>Date</strong></font></p>
  <table width="500" border="0">
    <tr> 
      <td width="100%"> <form name="form1" method="post" action="">
          <p align="center"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 
            <select name="selectjour">
              <option value="1" selected>1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
              <option value="5">5</option>
              <option value="6">6</option>
              <option value="7">7</option>
              <option value="8">8</option>
              <option value="9">9</option>
              <option value="10">10</option>
              <option value="11">11</option>
              <option value="12">12</option>
              <option value="13">13</option>
              <option value="14">14</option>
              <option value="15">15</option>
              <option value="16">16</option>
              <option value="17">17</option>
              <option value="18">18</option>
              <option value="19">19</option>
              <option value="20">20</option>
              <option value="21">21</option>
              <option value="22">22</option>
              <option value="23">23</option>
              <option value="24">24</option>
              <option value="25">25</option>
              <option value="26">26</option>
              <option value="27">27</option>
              <option value="28">28</option>
              <option value="29">29</option>
              <option value="30">30</option>
              <option value="31">31</option>
            </select>
            <em>jour</em> <em> 
            <select name="selectmois">
              <option value="1" selected>Janvier</option>
              <option value="2">Février</option>
              <option value="3">Mars</option>
              <option value="4">Avril</option>
              <option value="5">Mai</option>
              <option value="6">Juin</option>
              <option value="7">Juillet</option>
              <option value="8">Août</option>
              <option value="9">Septembre</option>
              <option value="10">Octobre</option>
              <option value="11">Novembre</option>
              <option value="12">Décembre</option>
            </select>
            mois 
            <select name="selectannee">
              <option value="2003">2003</option>
              <option value="2004" selected>2004</option>
              <option value="2005">2005</option>
              <option value="2006">2006</option>
              <option value="2007">2007</option>
              <option value="2008">2008</option>
              <option value="2009">2009</option>
              <option value="2010">2010</option>
            </select>
            année </em> 
            <input type="button" name="affich" value="Afficher" onClick="AffichRes(document.form1.selectannee.value,document.form1.selectmois.value,document.form1.selectjour.value)">

            </font></p>
          <p align="center"><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"> 
            <input name="butPrec" type="button" id="butPrec" value="Jour précédent" onClick="PrevPage(document.form1.selectannee.value,document.form1.selectmois.value,document.form1.selectjour.value)">
            <input name="butNext" type="button" id="butNext" value="Jour Suivant" onClick="NextPage(document.form1.selectannee.value,document.form1.selectmois.value,document.form1.selectjour.value)">
            </font></p>
        </form></td>
    </tr>
  </table>
</div>
</body>
</html>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.