使用Flex计算年龄的最佳方法是什么?
时间:2020-03-05 18:47:03 来源:igfitidea点击:
使用Flex计算年龄的最佳方法是什么?
解决方案
回答
我在此页面底部的评论部分(现已离线)中找到了答案。
jpwrunyan said on Apr 30, 2007 at 10:10 PM : By the way, here is how to calculate age in years (only) from DOB without needing to account for leap years:
经过林伟玮的稍许修正,代码显示为
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; }
This handles most situations where you need to calculate age.
回答
我们也可以执行与此处讨论的大致相同的操作:(翻译为AS3)
var age:int = (new Date()).fullYear - bDay.fullYear; if ((new Date()) < (new Date((bDay.fullYear + age), bDay.month, bDay.date))) age--;
回答
这是一个更复杂的计算,它以年和月为单位计算年龄。示例:用户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"; }
回答
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;
回答
这是单线:
int( now.getFullYear() - dob.getFullYear() + (now.getMonth() - dob.getMonth())*.01 + (now.getDate() - dob.getDate())*.0001 );
回答
我在这里找到了最佳答案的一些问题。我在这里用了两个答案来拼凑出一些准确的内容(无论如何对我来说,也希望对我们有帮助!)
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; }