0/5 (9 avis)
Snippet vu 12 516 fois - Téléchargée 22 fois
<? /* -------------------------------------------------------------- FONCTION EstBissextile POUR SAVOIR SI L'ANNEE EST BISSEXTILE -------------------------------------------------------------- */ function EstBissextile($annee) // RETOURNE 1 SI L'ANNEE EST BISSEXTILE { if($annee%4 == 0 AND $annee%100 != 0 OR $annee%400 == 0) $bissextile = 1; else $bissextile = 0; return $bissextile; } /* -------------------------------------------------------------- FONCTION PRINCIPALE (RETOUNE L'AGE) -------------------------------------------------------------- */ function AgeJours($jour,$mois,$annee) // RETOURNE L'AGE (ans/mois et en jours) EN UTILISANT LE JOUR/MOIS/ANNEE DE LA DATE DE NAISSANCE { $age_en_jours = 0; $annee_actuelle = date('Y'); $mois_actuel = date('m'); $jour_actuel = date('j'); $num_jour_actuel = date('z'); $nbr_annees = $annee_actuelle - $annee; // On crée "timestamp_anniversaire" pour connaitre le numéro du jour de l'anniversaire if(EstBissextile($annee)) { $timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1996); // 1996 est bissextile $nbr_jour_annee = 366; } else { $timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1997); // 1997 n'est pas bissextile $nbr_jours_annee = 365; } $num_jour_anniv = date('z',$timestamp_anniversaire); // Numéro du jour de la naissance if($mois > $mois_actuel) // On ne prend pas en compte l'année en cours { $nbr_annees--; if($jour > $jour_actuel) // Un mois en moins $nbr_mois = 12 - ($mois - $mois_actuel) - 1; else $nbr_mois = 12 - ($mois - $mois_actuel); } elseif($mois < $mois_actuel) // On prend en compte l'année actuelle { $nbr_mois = $mois_actuel - $mois; if($jour > $jour_actuel) // Un mois en moins $nbr_mois--; } elseif($mois == $mois_actuel) // On vérifie le jour du mois { if($jour > $jour_actuel) // On ne prend pas en compte l'année en cours { $nbr_annees--; $nbr_mois = 11; } else $nbr_mois = 0; } $age_en_jours += ($nbr_jours_annee - $num_jour_anniv + $num_jour_actuel)%$nbr_jours_annee; for($i = 0 ; $i < $nbr_annees ; $i++) { $annee_i = $annee+$i; if(EstBissextile($annee_i)) $age_en_jours += 366; else $age_en_jours += 365; } $age = $nbr_annees.' ans et '.$nbr_mois.' mois ('.$age_en_jours.' jours)'; return $age; } ?>
5 mars 2007 à 21:28
function EstBissextile($annee) {
return ( (int) $annee%4 === 0 OR $annee%400 !== 0 );
}
26 févr. 2007 à 17:19
Car si c'est $annee%400 !== 0 qui fait plus souvent FALSE, il faut la placer en première dans l'instruction. Un FALSE dans un ET renvoit toujours FALSE et les instructions qui suivent ne sont pas exécuté du tout.
D'où un petit gain en performance :p
(jme change en Antho ^^)
26 févr. 2007 à 17:16
Quel boulet ^^
Pour faire vraiment épuré, ca donnerait un truc dans le genre :
function EstBissextile($annee) {
return ( (int) $annee%4 === 0 && $annee%400 !== 0 );
}
7 lignes en 1 seule :)
C'est beau la prog par moment ^^
26 févr. 2007 à 16:57
return ( $annee%4 == 0 && $annee%400 != 0 ) ? TRUE : FALSE;
}
Rooooooo... FhX voyons... .. .
function EstBissextile($annee)
{
return (($annee%4) === 0 && ($annee%400) !== 0);
}
@ tchaOo°
ps : perso je rajouretais un cast au début de la fonction... .. .
25 févr. 2007 à 19:35
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.