代码编写背景,控制被保险人的年龄在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;
}