2010-03-03 4 views
1

J'essaie de calculer l'âge en flex. J'ai trouvé cette question précédente What is the best way to calculate Age using Flex?calcul d'âge en Flex

Je suis un peu penché vers cette

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"; } 

mais je ne comprends pas 100% ce qui se passe.

Comment puis-je aller dans mon code si la date était le 23/12/1990?

Comment également procéder pour modifier ce code afin de calculer l'âge si deux dates sont fournies au lieu d'utiliser la date actuelle? par exemple. 12/23/1990 - 10/15/1999

Merci!

Répondre

0

Date.getTime() retourne le nombre de millisecondes depuis le 1er janvier 1970, donc diff est le nombre de millisecondes entre les deux dates. Le code divise par 86400000 parce que c'est le nombre de millisecondes par jour. Le reste devrait être évident.

Pour modifier la fonction pour permettre à deux dates à saisir, vous pouvez changer la fonction comme ceci:


private function calculateAge(dob:Date, endDate:Date):String {   
    var ageDays:int = 0; 
    var ageYears:int = 0; 
    var ageRmdr:int = 0; 
    var diff:Number = endDate.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"; 
} 
0

j'imagine que le changement de la façon suivante fonctionnerait:

private function calculateAge(dob:Date, startfrom:Date):String {   

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

var diff:Number = startfrom.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"; 
}