使用 Flex 计算年龄的最佳方法是什么?
Richard Braxton
问问题
5412 次
6 回答
12
我在此页面底部的评论部分(现已离线)找到了答案。
jpwrunyan 在 2007 年 4 月 30 日晚上 10:10 说:
顺便说一句,这里是如何从 DOB 计算年龄(仅)而不需要考虑闰年:
由Fine-Wei Lin稍作修正,代码如下
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;
}
这可以处理大多数需要计算年龄的情况。
于 2008-09-03T14:51:37.710 回答
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;
于 2009-02-12T18:10:17.050 回答
1
您也可以按照此处讨论的大致相同的方式进行操作:(翻译为 AS3)
var age:int = (new Date()).fullYear - bDay.fullYear;
if ((new Date()) < (new Date((bDay.fullYear + age), bDay.month, bDay.date))) age--;
于 2008-09-04T13:43:05.230 回答
1
这是一个更复杂的计算,它以年和月为单位计算年龄。示例:用户 3 岁 2 个月大。
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";
}
于 2009-02-12T16:25:16.550 回答
1
这是一个单行:
int( now.getFullYear() - dob.getFullYear() + (now.getMonth() - dob.getMonth())*.01 + (now.getDate() - dob.getDate())*.0001 );
于 2009-08-12T23:16:41.137 回答
1
我在这里的最佳答案中发现了一些问题。我在这里使用了几个答案来拼凑一些准确的东西(无论如何,对我来说,也希望你!)
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;
}
于 2010-05-07T20:58:49.280 回答