js 计算在职时间

话不多说,先上代码。

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 // 相差整年数
        var month=M1 - 1 + 12 - M2 // 相差整月数(非同年);
        if (year < 0) {
             month = M1 - M2 - 1  // 相差整月数(同年)
        }
        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;
        return obj;
    }

d1是当前时间,d2是入职时间,计算结果。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AQMAX

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值