JS返回时间差已年月日的形式

JS返回时间差已年月日的形式:

function diffDate() {

        let begin = new Date($('#start_school_time').val());
        let end = new Date();

        // 如果开始时间晚于结束时间,交换日期,并记录交换状态
        let swap = false;
        if (begin > end) {
            let tmp = begin;
            begin = end;
            end = tmp;
            swap = true;
        }

        // 分别取二个日期的年、月、日值
        let d1 = begin.getDate();
        let m1 = begin.getMonth() + 1;
        let y1 = begin.getFullYear();
        let d2 = end.getDate();
        let m2 = end.getMonth() + 1;
        let y2 = end.getFullYear();

        // 获取每个月的天数,这里要注意一下闰年的2月
        var getMonthDays = function (y, m) {
            var aMonthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
            if (m == 2 && ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0))) {
                return 29;
            }
            return aMonthDays[m];
        };

        let y, m, d
        let tempD = 0
        let tmpM = 0
        let tmpY = 0

        // 计算日,不足时向月份借
        if (d2 >= d1) {
            d = d2 - d1
        } else {
            tmpM = -1
            d = getMonthDays(y1, m1) + d2 - d1
        }

        // 计算月,不足时向年份借
        if (m2 + tmpM >= m1) {
            m = m2 + tmpM - m1
        } else {
            tmpY = -1
            m = 12 + m2 + tmpM - m1
        }

        // 计算年
        y = y2 + tmpY - y1

        // 拼接距离字符串 输出格式如:"5天", "5月 05天", "5年 05月 05日"
        let str = "";
        if (y > 0) {
            str = y + '年 ' + ("0" + m).substr(-2) + "月 " + ("0" + d).substr(-2) + '天 '
        } else if (m > 0) {
            str = m + "月 " + ("0" + d).substr(-2) + '天 '
        } else if (d > 0) {
            str = d + '天 '
        }

       alert(str);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值