Flex中的年龄计算
问题描述:
我正在尝试计算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
谢谢!
答
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";
}
答
我会想象,改变如下会的工作:
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";
}