Probleme calcul date
Résolu
moon136
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
moon136 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
moon136 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Probleme calcul date
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Airpods 3 date de sortie - Guide
3 réponses
Bonjour,
Je n'ai pas tout compris à ton raisonnement, et notamment au m.setYear.
Je te déconseille d'utiliser une même variable pour gérer plusieurs informations différentes (tu le fais sur ce "m", tu le fais aussi plus haut avec le "ok"). Et nomme tes variables de façon explicite, tu t'y perdras moins.
De façon générale, pour calculer l'âge d'une personne, on regarde les jours du mois : si le jour anniversaire est inférieur au jour courant, on fait la différence ; sinon, on prend le complément à 30 et on enlève un mois.
Puis on regarde les mois, de la même manière.
Puis on calcule la différence en années.
Il y a quelques temps j'avais codé exactement la même fonction, tiens, j'ai retrouvé mon code :
Je n'ai pas tout compris à ton raisonnement, et notamment au m.setYear.
Je te déconseille d'utiliser une même variable pour gérer plusieurs informations différentes (tu le fais sur ce "m", tu le fais aussi plus haut avec le "ok"). Et nomme tes variables de façon explicite, tu t'y perdras moins.
De façon générale, pour calculer l'âge d'une personne, on regarde les jours du mois : si le jour anniversaire est inférieur au jour courant, on fait la différence ; sinon, on prend le complément à 30 et on enlève un mois.
Puis on regarde les mois, de la même manière.
Puis on calcule la différence en années.
Il y a quelques temps j'avais codé exactement la même fonction, tiens, j'ai retrouvé mon code :
function calculeAgeTextuel(naissance, jourJ, avecAnniversaire, pronom) { var resultat = ""; var ageJours = 0; var ageMois = 0; var ageAnnees = 0; var offsetMois = 0; var offsetAnnees = 0; // Calcul de la partie "jours" de l’âge if (jourJ.getDate() >= naissance.getDate()) ageJours = jourJ.getDate() - naissance.getDate(); else { ageJours = nbJoursDuMois(jourJ.getMonth() - 1) - naissance.getDate() + jourJ.getDate(); offsetMois = -1; } // Calcul de la partie "mois" de l’âge if (jourJ.getMonth() >= naissance.getMonth()) ageMois = jourJ.getMonth() - naissance.getMonth(); else { ageMois = 12 - naissance.getMonth() + jourJ.getMonth(); offsetAnnees = -1; } ageMois = ageMois + offsetMois; // Calcul de la partie "années" de l’âge ageAnnees = jourJ.getYear() - naissance.getYear() + offsetAnnees; // réalignement mois while (ageMois < 0) { ageMois = 12 + ageMois; ageAnnees = ageAnnees - 1; } // Écriture du résultat var isJours = ageJours != 0; var isMois = ageMois != 0; var isAnnees = ageAnnees != 0; var texteJ = ""; var texteM = ""; var texteA = ""; if (isJours && (isMois || isAnnees)) texteJ = "et "; if (isJours) texteJ += ageJours + ((ageJours > 1) ? " jours" : " jour"); if (isAnnees && isMois && !isJours) texteM = "et "; if (isMois) texteM += ageMois + " mois"; if (isAnnees) texteA = ageAnnees + ((ageAnnees > 1) ? " ans" : " an"); resultat = texteA + " " + texteM + " " + texteJ; if (ageAnnees == 0 && ageMois == 0 && ageJours == 0) resultat = "naissance"; if (naissance > jourJ) resultat = "pas né"; if (avecAnniversaire) { var texteAnniversaire = ""; if (!isJours && !isMois) texteAnniversaire = "<br/>C'est " + pronom + " anniversaire !"; else if (!isJours) texteAnniversaire = "<br/> C'est " + pronom + " moiniversaire !"; resultat += texteAnniversaire; } return resultat; } function nbJoursDuMois(mois) { var resultat = 30; if (mois == -1) mois = 11; if (mois == 0 || mois == 2 || mois == 4 || mois == 6 || mois == 7 || mois == 9 || mois == 11) resultat = 31; if (mois == 1) resultat = 28; return resultat; }
Bonjour merci pour ta réponse je comprend mieux à présent. Je vais tester et je te dirais quand ce sera résolu. Je n'ai pas de pc en ce moment
Merci