计算年龄

代码编写背景,控制被保险人的年龄在0.5周岁和60周岁之间。小于0.5周岁或大于60周岁,则不让投保。

这里主要分享的是从页面取得被保险人的出生日期,计算出当前年龄。使用JavaScript实现。若有其他好的方式以后会更新。

function calcNVhlAges(date){
    var d1 = new Date(Date.parse(date.replace(/-/g, "/")));//2012-01-01
    var d2 = new Date();
    var year1 = d1.getFullYear();// 输入年
    var year2 = d2.getFullYear();// 当前年
    var month1 = (parseInt(d1.getMonth())+1);  // 输入月
    var month2 = (parseInt(d2.getMonth())+1);  // 当前月
    var day1 = parseInt(d1.getDate()); // 输入日
    var day2 = parseInt(d2.getDate()); // 当前日
    var yeardiff = year2 - year1;var monthdiff = 0;var daydiff = 0;
    // 第一个逻辑分支 计算年差、月差。
    if(month2 >= month1) {
        monthdiff = month2 - month1;
    }else {
        monthdiff = month2 - month1 + 12;
        yeardiff = yeardiff - 1;
    }
    // 第二个逻辑分支 根据日差,调整年差、月差
    // 样例一:日差有余补月差
    if(day2 > day1){
        monthdiff = monthdiff + 1;
        // 样例二:如果当前日等于年龄日,月差、年差无变化
    }else if(day2 == day1){
        
    }else {
        // 样例三:日差不够,月差补
        if(monthdiff >= 1 && monthdiff != 6){

        }else if(monthdiff == 6){
            monthdiff = monthdiff - 1;
        }else if(monthdiff == 0){
            // 样例三:月差不够,年差调
            monthdiff = 12 - 1;
            yeardiff = yeardiff - 1;
        }
    }
    // 根据月差,计算年龄
    // 月差为一,年差为零   yeardiff = 0; monthdiff = 1;
    var monthMath = (monthdiff/12).toFixed(3);
    var age = parseFloat(yeardiff) + parseFloat(monthMath);
    // console.log("yeardiff:"+yeardiff);
    // console.log("monthMath:"+monthMath);
    // console.log("age:"+age);
    return age;
}

posted @ 2018-12-27 18:18  doc-li  阅读(381)  评论(0编辑  收藏  举报