2010-03-03 193 views
1

我正在尝试计算flex中的年龄。我发现这个先前的问题What is the best way to calculate Age using Flex?Flex中的年龄计算

我对这个

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

有点倾斜,但什么事情我不明白100%。

我该如何去实现这个到我的代码说如果日期是12/23/1990?

另外如果提供两个日期而不是使用当前日期,我该如何修改此代码来计算年龄?例如。 12/23/1990 - 10/15/1999

谢谢!

回答

0

Date.getTime()自1970年1月1日的毫秒数,所以差异是两个日期之间的毫秒数。代码除以86400000,因为那是每天的毫秒数。其余的应该是显而易见的。

要修改的功能,允许输入两个日期,你可以改变这样的功能:


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

我会想象,改变如下会的工作:

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