js 计算日期差(年/月/日)

今天做项目产品有个需求:根据注册用户孩子的生日计算该孩子的年龄,精确到年月日,于是写下如下代码,仅供参考,如有不足之处请见谅,望多加指正!!!

function diffTime(d1, d2) {
        d1 = new Date(d1.replace(/-/g, '/')) //结束时间
        d2 = new Date(d2.replace(/-/g, '/')) //开始时间
        if (d1.getTime() < d2.getTime()) {
            console.log('结束日期不能小于开始时间')
            return '结束日期不能小于开始时间'
        }
        var Y1 = d1.getFullYear() // 结束年份
        var Y2 = d2.getFullYear() // 开始年份
        var M1 = d1.getMonth() + 1 // 结束月份
        var M2 = d2.getMonth() + 1 // 开始月份
        var D1 = d1.getDate() // 结束日期
        var D2 = d2.getDate() // 开始日期
        var M1_days = new Date(Y1, M1, 0).getDate() // 结束时间当月已过的天数
        var M2_days = new Date(Y2, M2, 0).getDate() // 开始时间当月经过的天数
        var obj = {} // 结果存储器
        var year = Y1 - Y2 - 1 // 相差整年数
        if (year < 0) {
            var month = M1 - M2 - 1  // 相差整月数(同年)
            var month = M1 - 1 + 12 - M2 // 相差整月数(非同年)
        }
        var diffDays = D1 + (M2_days - D2) // 相差总天数
        if (diffDays >= M2_days) {
            month = month + 1
            var day = diffDays - M2_days
        } else {
            var day = diffDays
        }
        year += Math.floor(month / 12)
        if (year < 0) {
            year = 0
        }
        month = month % 12
        obj.year = year
        obj.month = month
        obj.day = day
        console.log(obj)
        console.log('相差' + obj.year + '年' + obj.month + '月' + obj.day + '日')
        return obj
    }

运行结果展示

运行结果

  • 5
    点赞
  • 5
    收藏 更改收藏夹
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@李利强

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值