2008-09-03 17 views

Répondre

12

J'ai trouvé une réponse à the bottom of this page in comments section (which is now offline).

jpwrunyan dit le 30 avr 2007 à 22h10:

D'ailleurs, voici comment calculer l'âge en années (seulement) de la date de naissance, sans avoir besoin de rendre compte de saut ans:

Avec une légère correction par Fine-Wei Lin, le code lit

private function getYearsOld(dob:Date):uint { 
    var now:Date = new Date(); 
    var yearsOld:uint = Number(now.fullYear) - Number(dob.fullYear); 
    if (dob.month > now.month || (dob.month == now.month && dob.date > now.date)) 
    { 
     yearsOld--; 
    } 
    return yearsOld; 
} 

Ceci gère la plupart des situations où vous devez calculer l'âge.

1

Vous pouvez aussi le faire à peu près la même chose que discuté here: (traduit AS3)

var age:int = (new Date()).fullYear - bDay.fullYear; 
if ((new Date()) < (new Date((bDay.fullYear + age), bDay.month, bDay.date))) age--; 
1

Voici un petit calcul plus complexe, ce calcule l'âge en années et mois. Exemple: l'utilisateur a 3 ans et 2 mois.

private function calculateAge(dob:Date):String {   
    var now:Date = new Date(); 

    var ageDays:int = 0; 
    var ageYears:int = 0; 
    var ageRmdr:int = 0; 

    var diff:Number = now.getTime()-dob.getTime(); 
    ageDays = diff/86400000; 
    ageYears = Math.floor(ageDays/365.24); 
    ageRmdr = Math.floor((ageDays - (ageYears*365.24))/30.4375); 

    if (ageRmdr == 12) { 
     ageRmdr = 11; 
    } 

    return ageYears + " years " + ageRmdr + " months"; 
} 
3
var userDOB : Date = new Date(year,month-1,day); 
var today : Date = new Date(); 

var diff : Date = new Date(); 
diff.setTime(today.getTime() - userDOB.getTime()); 

var userAge : int = diff.getFullYear() - 1970; 
1

Voici un one-liner:

int(now.getFullYear() - dob.getFullYear() + (now.getMonth() - dob.getMonth())*.01 + (now.getDate() - dob.getDate())*.0001); 
1

J'ai trouvé quelques problèmes avec la partie supérieure réponse ici. J'ai utilisé quelques réponses ici pour concocter quelque chose qui était précis (pour moi de toute façon, j'espère pour vous aussi!)

private function getYearsOld(dob:Date):uint 
{ 
    var now:Date = new Date(); 
    var age:Date = new Date(now.getTime() - dob.getTime()); 
    var yearsOld:uint = age.getFullYear() - 1970; 
    return yearsOld; 
}