给定格式 YYYYMMDD 的出生日期,我如何计算年龄?是否可以使用该Date()功能?
Date()
我正在寻找比我现在使用的更好的解决方案:
var dob = '19800810'; var year = Number(dob.substr(0, 4)); var month = Number(dob.substr(4, 2)) - 1; var day = Number(dob.substr(6, 2)); var today = new Date(); var age = today.getFullYear() - year; if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) { age--; } alert(age);
我会追求可读性:
function _calculateAge(birthday) { // birthday is a date var ageDifMs = Date.now() - birthday.getTime(); var ageDate = new Date(ageDifMs); // miliseconds from epoch return Math.abs(ageDate.getUTCFullYear() - 1970); }
免责声明: 这也存在精度问题,因此也不能完全信任。它可能会关闭几个小时、几年或夏令时(取决于时区)。
相反,如果精度非常重要,我建议为此使用库。此外@Naveenspost, 可能是最准确的,因为它不依赖于一天中的时间。 尝试这个。
@Naveenspost
function getAge(dateString) { var today = new Date(); var birthDate = new Date(dateString); var age = today.getFullYear() - birthDate.getFullYear(); var m = today.getMonth() - birthDate.getMonth(); if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { age--; } return age; }
我相信您的代码中唯一看起来很粗糙的就是substr零件。
substr