JS 计算日期相差多少月天

js 计算两个日期的差值,刨除当前日期:

                            function timeDifc(start, end) {
                                var starts = new Date(start),
                                    ends = new Date(end),
                                    message = '';
                                if (starts.getTime() > ends.getTime()) return message = "现在的时间小于以前的时间!";
                                //if ((ends.getTime() - starts.getTime()) / (1000 * 60) < 1) return message = "刚刚";
                               // if (ends.getFullYear() > starts.getFullYear() && ends.getMonth() >= starts.getMonth()) message += ends.getFullYear() - starts.getFullYear() + "年";
                                if (ends.getFullYear() > starts.getFullYear()) {
                                    if (ends.getDate() >= starts.getDate()-1) {
                                        message += ends.getMonth() + 12 - starts.getMonth() + "月";
                                        message += ends.getDate() - starts.getDate()-1 + "天";
                                    }
                                    else {
                                        message += ends.getMonth() + 11 - starts.getMonth() + "月";
                                        switch (ends.getMonth()) {
                                            case 0:
                                            case 2:
                                            case 4:
                                            case 6:
                                            case 7:
                                            case 9:
                                            case 11:

                                                message += ends.getDate() + 31 - starts.getDate()-1 + "天";
                                                break;
                                            case 3:
                                            case 5:
                                            case 8:
                                            case 10:
                                                message += ends.getDate() + 30 - starts.getDate()-1 + "天";
                                                break;
                                            case 1:
                                                if (ends.getFullYear() % 4 === 0) {
                                                    message += ends.getDate() + 29 - starts.getDate()-1 + "天";
                                                    break;
                                                }
                                                else {
                                                    message += ends.getDate() + 28 - starts.getDate()-1 + "天";
                                                }

                                        }
                                    }

                                }
                                else {
                                    if (ends.getMonth() > starts.getMonth() && ends.getDate()-1 >= starts.getDate()) {
                                        message += ends.getMonth() - starts.getMonth() + "月";
                                        message += ends.getDate() - starts.getDate() + "天";
                                    }
                                    if (ends.getMonth() > starts.getMonth() && ends.getDate()-1 < starts.getDate()) {
                                        message += ends.getMonth() - 1 - starts.getMonth() + "月";
                                        switch (ends.getMonth()) {
                                            case 0:
                                            case 2:
                                            case 4:
                                            case 6:
                                            case 7:
                                            case 9:
                                            case 11:

                                                message += ends.getDate() + 31 - starts.getDate()-1 + "天";
                                                break;
                                            case 3:
                                            case 5:
                                            case 8:
                                            case 10:
                                                message += ends.getDate() + 30 - starts.getDate()-1 + "天";
                                                break;
                                            case 1:
                                                if (ends.getFullYear() % 4 === 0) {
                                                    message += ends.getDate() + 29 - starts.getDate()-1 + "天";
                                                    break;
                                                }
                                                else {
                                                    message += ends.getDate() + 28 - starts.getDate()-1 + "天";
                                                }

                                        }


                                    }
                                }
                                //if (ends.getHours() > starts.getHours() && ends.getMinutes() >= starts.getMinutes()) message += ends.getHours() - starts.getHours() + "小时";
                                //if (ends.getMinutes() > starts.getMinutes()) message += ends.getMinutes() - starts.getMinutes() + "分钟";
                                return message;
                            }

调用示例:

var diffDay = timeDifc("2019-03-26", "2019-07-02");

获得的结果是:"3月6天"

2019-07-10:

第二种方式

DateDifference = function (begindate, enddate) {
    // 拆分年月日
    dateArry1 = begindate.split('-');
    // 得到月数
    date1 = parseInt(dateArry1[0]) * 12 + parseInt(dateArry1[1]);
    // 拆分年月日
    dateArry2 = enddate.split('-');
    // 得到月数
    date2 = parseInt(dateArry2[0]) * 12 + parseInt(dateArry2[1]);
    var m = Math.abs(date1 - date2);
    if (m === 0) { //当月
        return "0" + "^" + Math.abs(parseInt(dateArry2[2]) - parseInt(dateArry1[2]));
    }
    else {
        if (parseInt(dateArry1[2]) < parseInt(dateArry2[2])) {
            return m + "^" + Math.abs(parseInt(dateArry2[2]) - parseInt(dateArry1[2]));
        }
        else {
            m = m - 1;
            var month = parseInt(dateArry2[1]) - 1;
            if (month === 0) {
                month = 12;
            }
            var montharry = [1, 3, 5, 7, 8, 10, 12];
            if (montharry.indexOf(month) !==-1) {
                return m + "^" + Math.abs(parseInt(dateArry2[2]) + 31 - parseInt(dateArry1[2]));
            }
            else {
                return m + "^" + Math.abs(parseInt(dateArry2[2]) + 30 - parseInt(dateArry1[2]));
            }
        }
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值