根据出生日期计算出周岁跟月数以及年月日的正则校验

在这里插入图片描述


```java

```javascript
//=====.出生日期 失去焦点触发======
$("input[name='birthday']").blur(function () {
    var birthday = $(this).val();//获取到出生日期的文本值
    //正则 规范的日期校验
    var reg=  /^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$/;
    //用test进行校验
    if(reg.test(birthday)){
        //调用算年龄的方法countAge 传入我们的值birthday 并且用str变量接收
        var str = countAge(birthday);
        $("input[name='age']").val(str[0]);//绑定在岁文本框上
        $("input[name='month']").val(str[1]);//绑定在月文本框上
    }else {//如果不符合提示并且清空相关文本框内容
        layer.alert("请输入正确的日期格式", {icon: 0, title: '提示', anim: 6})
        $("input[name='birthday']").val("");
        $("input[name='age']").val("");
        $("input[name='month']").val("");
    }
});
//==根据日期算年龄跟月的方法==
function countAge(birthday){
    if(birthday){
        //split根据指定字符进行分割返回一个数组
        birthday=birthday.split('-');
        // 新建日期对象
        let date = new Date();
        // 今天日期,数组,同 birthday
        let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
        // 分别计算年月日差值
        let age = today.map((val, index) => {
            return val - birthday[index]
        })
        // 当天数为负数时,月减 1,天数加上月总天数
        if (age[2] < 0) {
            // 简单获取上个月总天数的方法,不会错
            let lastMonth = new Date(today[0], today[1], 0)
            age[1]--
            age[2] += lastMonth.getDate()
        }
        // 当月数为负数时,年减 1,月数加上 12
        if (age[1] < 0) {
            age[0]--
            age[1] += 12
        }
        console.log(age[0]+'岁'+age[1]+'月'+age[2]+'天');
        return [age[0],age[1]];//拿到我们需要的岁跟月 至于天 大家需要可以自行获取
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算年龄的方法是将当前日期减去出生日期,然后再按照年、、日的顺序依次计算年龄。 具体的计算方法如下: 1. 计算出生日期和死亡日期之间的天 假设出生日期为 birth_date,死亡日期为 death_date,可以使用以下 SQL 语句计算它们之间的天: ``` SELECT TRUNC(death_date) - TRUNC(birth_date) AS days_diff FROM dual; ``` 其中 TRUNC 函可以将日期时间类型的值截取到日期部分,这样可以避免计算现误差。 2. 将天转换为年龄 将天除以 365 或 366(闰年),可以得到一个大概的年龄。但是这种方法有一定的误差,因为年份不是精确的 365 天。更精确的方法是使用 EXTRACT 函将天转换为年、、日的组合,然后再计算年龄。以下是计算年龄的 SQL 语句: ``` SELECT EXTRACT(YEAR FROM age_interval) AS age_years, EXTRACT(MONTH FROM age_interval) AS age_months, EXTRACT(DAY FROM age_interval) AS age_days FROM ( SELECT TRUNC(MONTHS_BETWEEN(death_date, birth_date) / 12) AS age_years, TRUNC(MOD(MONTHS_BETWEEN(death_date, birth_date), 12)) AS age_months, TRUNC(MOD(death_date - ADD_MONTHS(birth_date, TRUNC(MONTHS_BETWEEN(death_date, birth_date) / 12) * 12), 30)) AS age_days, death_date - birth_date AS age_interval FROM dual ); ``` 该 SQL 语句使用 MONTHS_BETWEEN 函计算两个日期之间的,然后将转换为年、、日的组合。其中 EXTRACT 函可以分别提取年、、日部分,MOD 函可以计算,ADD_MONTHS 函可以将日期增加指定的。最后,使用 TRUNC 函可以将小部分截取掉,得到整部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值