Modification de script

Fermé
amenosyla Messages postés 5 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 6 mai 2010 - 5 mai 2010 à 06:25
amenosyla Messages postés 5 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 6 mai 2010 - 6 mai 2010 à 07:22
Bonjour,
Je cherche à modifier un script. Je voudrais qu'il m'affiche le nombe d'année, de mois, de semaines et de jour. Pour les années, mois, jours ça va mais pas le nombre de semaine. Comment faire ?
<SCRIPT LANGUAGE="JavaScript">

//valeurs de départ (à modifier)
var cible= new Date("April 15, 2010 07:07:00");

//la date d'aujourd'hui
var date_day = new Date();

//calcul des différences
var annee_diff = date_day.getFullYear() - cible.getFullYear();
var mois_diff = (date_day.getMonth()+1) - (cible.getMonth()+1);
var jour_diff = date_day.getDate() - cible.getDate();
var heure_diff = date_day.getHours() - cible.getHours();
var minute_diff = date_day.getMinutes() - cible.getMinutes();
var seconde_diff = date_day.getSeconds() - cible.getSeconds();

//gestion des valeurs négatives
if (heure_diff < 0)
{ 
  heure_diff +=24;
  jour_diff--;
}
if (jour_diff < 0)
{
  switch(cible.getMonth()+1)
  {
    case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
      jour_diff+=31;
	  break;
	case 2:
	  if (cible.getFullYear()%4)
	  {
	    jour_diff+=29;
	  }
	  else
	  {
	    jour_diff+=28;
	  }
	  break;
	case 4:
	case 6:
	case 9:
	case 11:
	  jour_diff+=30;
	  break
  }
  mois_diff--;
}
if (mois_diff < 0)
{
  mois_diff+=12;
  annee_diff--;
}


function decompte() {

seconde_diff +=1;
if (seconde_diff==60)
{ 
  seconde_diff=0;
  minute_diff +=1;
  if (minute_diff==60)
  {
    heure_diff +=1;
	if (heure_diff==24)
	{
	  jour_diff +=1;
	  if (((jour_diff==28)&&(date_day.getMonth()==2)&&(!date_day.getFullYear()%4))||((jour_diff==29)&&(date_day.getMonth()==2)&&(date_day.getFullYear()%4))||((jour_diff==30)&&((date_day.getMonth()==4)||(date_day.getMonth()==6)||(date_day.getMonth()==9)||(date_day.getMonth()==11)))||((jour_diff==31)&&((date_day.getMonth()==0)||(date_day.getMonth()==1)||(date_day.getMonth()==3)||(date_day.getMonth()==5)||(date_day.getMonth()==7)||(date_day.getMonth()==8)||(date_day.getMonth()==10))))
	  {
	    mois_diff+=1;
	  }
	  if (mois_diff==12)
	  {
	    annee_diff+=1;
	  }
	}
  }
}
// on affecte nos résultats aux champs du formulaire
document.getElementById("annees").innerHTML = annee_diff;
document.getElementById("mois").innerHTML = mois_diff;
document.getElementById("jours").innerHTML = jour_diff;
//document.getElementById("heures").innerHTML  = heure_diff;
//document.getElementById("minutes").innerHTML  = minute_diff;
//document.getElementById("secondes").innerHTML = seconde_diff;

// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}

</SCRIPT>

La seconde chose, c'est que je voudrais qu'à l'affichage mon script masque les valeurs négative. Pour l'instant il m'affiche 0 année 0 mois 19 jours et moi je voudrais voir 2 semaines 4 jours, ensuite 1 mois 1 jours, 1 mois 1 semaines 1 jours etc.......
Merci de votre aide
Voici le script complet
<SCRIPT LANGUAGE="JavaScript">

//valeurs de départ (à modifier)
var cible= new Date("April 15, 2010 07:07:00");

//la date d'aujourd'hui
var date_day = new Date();

//calcul des différences
var annee_diff = date_day.getFullYear() - cible.getFullYear();
var mois_diff = (date_day.getMonth()+1) - (cible.getMonth()+1);
var jour_diff = date_day.getDate() - cible.getDate();
var heure_diff = date_day.getHours() - cible.getHours();
var minute_diff = date_day.getMinutes() - cible.getMinutes();
var seconde_diff = date_day.getSeconds() - cible.getSeconds();

//gestion des valeurs négatives
if (heure_diff < 0)
{ 
  heure_diff +=24;
  jour_diff--;
}
if (jour_diff < 0)
{
  switch(cible.getMonth()+1)
  {
    case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
      jour_diff+=31;
	  break;
	case 2:
	  if (cible.getFullYear()%4)
	  {
	    jour_diff+=29;
	  }
	  else
	  {
	    jour_diff+=28;
	  }
	  break;
	case 4:
	case 6:
	case 9:
	case 11:
	  jour_diff+=30;
	  break
  }
  mois_diff--;
}
if (mois_diff < 0)
{
  mois_diff+=12;
  annee_diff--;
}


function decompte() {

seconde_diff +=1;
if (seconde_diff==60)
{ 
  seconde_diff=0;
  minute_diff +=1;
  if (minute_diff==60)
  {
    heure_diff +=1;
	if (heure_diff==24)
	{
	  jour_diff +=1;
	  if (((jour_diff==28)&&(date_day.getMonth()==2)&&(!date_day.getFullYear()%4))||((jour_diff==29)&&(date_day.getMonth()==2)&&(date_day.getFullYear()%4))||((jour_diff==30)&&((date_day.getMonth()==4)||(date_day.getMonth()==6)||(date_day.getMonth()==9)||(date_day.getMonth()==11)))||((jour_diff==31)&&((date_day.getMonth()==0)||(date_day.getMonth()==1)||(date_day.getMonth()==3)||(date_day.getMonth()==5)||(date_day.getMonth()==7)||(date_day.getMonth()==8)||(date_day.getMonth()==10))))
	  {
	    mois_diff+=1;
	  }
	  if (mois_diff==12)
	  {
	    annee_diff+=1;
	  }
	}
  }
}
// on affecte nos résultats aux champs du formulaire
document.getElementById("annees").innerHTML = annee_diff;
document.getElementById("mois").innerHTML = mois_diff;
document.getElementById("jours").innerHTML = jour_diff;
//document.getElementById("heures").innerHTML  = heure_diff;
//document.getElementById("minutes").innerHTML  = minute_diff;
//document.getElementById("secondes").innerHTML = seconde_diff;

// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}

</SCRIPT>
<body onLoad="decompte()">
Les chatons ont maintenant
<span id="annees"></span> 
        <span id="mois">0</span> mois <span id="jours">0</span> jours <!--<span id="heures">0</span> 
        heures <span id="minutes">0</span> minutes <span id="secondes">0</span> 
        secondes<noscript>



A voir également:

2 réponses

Salut!

Alors j'ai pas vraiment tout lu car c'était un peu long lol mais si j'ai bien compris tu veux afficher le nombre d'années, mois, semaines et jours écoulés depuis la date à cible à la date actuelle! Si c'est bien ca pour avoir le nombres de semaines
tu divises le nombre de jours par 7 tout simplement!

Parce que une fois que tu as ton année, ton mois et ton nombre de jours (0an 0 mois 19jours) tu divise 19 par 7 ce qui te fait 2.714... tu arrondis ce chiffre à l'entier inférieur ce qui te donne 2!

var semaines_diff = (date_day.getDate() - cible.getDate())/7;
semaines_diff = Math.floor(semaines_diff);
0
amenosyla Messages postés 5 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 6 mai 2010
6 mai 2010 à 07:22
J'ai modifié le script comme ci dessus et j'ai maintenant comme résultat:

Les chatons ont maintenant 0 mois -2 semaines 21 jours

J'ai bien le calcul est erroné puisque je devrais avoir:

Les chatons ont maintenant 0 mois 3 semaines 0 jours

L'âge actuel des chatons est 21 jours.
0