重写后的标题为:根据YYYYMMDD格式的出生日期计算年龄
P粉265724930
P粉265724930 2023-08-20 16:03:39
[JavaScript讨论组]

如何根据格式为YYYYMMDD的出生日期计算年龄?是否可以使用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);


P粉265724930
P粉265724930

全部回复(2)
P粉574268989

尝试一下。

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部分。

Fiddlehttp://jsfiddle.net/codeandcloud/n33RJ/

P粉478188786

我会选择可读性:

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

免责声明:这个方法也存在精度问题,因此也不能完全信任。在某些年份、某些小时或夏令时(取决于时区)可能会有误差。

如果精度非常重要,我建议使用一个库来处理这个问题。此外,@Naveens post可能是最准确的,因为它不依赖于时间。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号