根据开始日期和结束日期,计算周数,季度数,返回数组结果,支持跨年,纯JS文件

1 篇文章 0 订阅
1 篇文章 0 订阅
function getWeekInYear(date) {
    //判断该星期是否跨年,如果跨年就是第一周
    let weekStartDate = getWeekStartByDate(date) //一周开始时间
    let endDate = getDateFromDay(weekStartDate, 6) //一周结束时间
    if (weekStartDate.getFullYear() != endDate.getFullYear()) {
        return endDate.getFullYear() + '年第1周'
    }
    let d1 = new Date(date)
    let d2 = new Date(date)
    d2.setMonth(0)
    d2.setDate(1)
    d2 = getWeekStartByDate(d2)
    let rq = d1 - d2
    let days = Math.ceil(rq / (24 * 60 * 60 * 1000)) + 1
    let num = Math.ceil(days / 7)
    return endDate.getFullYear() + '年第' + num + '周'
}
function getWeekStartByDate(date) {
    let day = date.getDay()
    return getDateFromDay(date, -day)
}
function getDateFromDay(dayDate, day) {
    let date = new Date()
    date.setTime(dayDate.getTime() + day * 24 * 60 * 60 * 1000)
    return date
}


/**
 * 获取区间日期的小时/天/周/月数组支持跨年
 *type:类型分为('hour'-小时,'day'-天,'week'-周,'month'-月)
 *start:开始日期
 *stop:结束日期
 * */
function getDuration(type,start,stop){
    var weekArr = new Array();
    var $array = new Array();
    var current = new Date(start);
    stop  = new Date(stop);
    while (current <= stop) {
        $array.push( new Date (current) );
        if(type == 'hour'){//小时
            current.setHours(current.getHours() + 1);
        }else if(type == 'day'){//天
            current.setDate(current.getDate() + 1);
        }else if(type == 'week'){//周
            current.setDate(current.getDate() + 7);
        }else if(type == 'month'){//月
            current.setMonth(current.getMonth() + 1);
        }else{//默认天
            current.setDate(current.getDate() + 1);
        }
    }
    for(var i=0;i<$array.length;i++){
        let week = getWeekInYear($array[i]);
        weekArr[i]=week;
    }
    return weekArr;
}



/**
 * 获取区间日期的季度
 *start:开始日期
 *stop:结束日期
 * */
function getFourSeason(start,stop) {
        let starttime = new Date(start);
        let endtime = new Date(stop);
        let startYear = starttime.getFullYear();
        let endYear = endtime.getFullYear();
        let startMonth = starttime.getMonth() + 1;
        let endMonth = endtime.getMonth() + 1;
        var arr = [];
        for (let i = startYear; i <= endYear; i++) {
            // 开始年份与结束年份相同
            if(startYear == endYear){
                if(startMonth<=3 && endMonth<=3){
                    arr.push(
                        i+"年"+"第一季度"
                    )
                }else if(startMonth<=3 && 3<endMonth && endMonth<=6){
                    arr.push(
                        i+"年"+"第一季度",
                        i+"年"+"第二季度"
                    )
                }else if(startMonth<=3 && 6<endMonth && endMonth<=9){
                    arr.push(
                        i+"年"+"第一季度",
                        i+"年"+"第二季度",
                        i+"年"+"第三季度"

                    )
                }else if(startMonth<=3 && 9<endMonth && endMonth<=12){
                    arr.push(
                        i+"年"+"第一季度",
                        i+"年"+"第二季度",
                        i+"年"+"第三季度",
                        i+"年"+"第四季度"
                    )
                }else if(3<startMonth && startMonth<=6 && 3<endMonth && endMonth<=6){
                    arr.push(
                        i+"年"+"第二季度",
                    )
                }else if(3<startMonth && startMonth<=6 && 6<endMonth && endMonth<=9){
                    arr.push(
                        i+"年"+"第二季度",
                        i+"年"+"第三季度"
                    )
                }else if(3<startMonth && startMonth<=6 && 9<endMonth && endMonth<=12){
                    arr.push(
                        i+"年"+"第二季度",
                        i+"年"+"第三季度",
                        i+"年"+"第四季度"
                    )
                }else if(6<startMonth && startMonth<=9 && 6<endMonth && endMonth<=9){
                    arr.push(
                        i+"年"+"第三季度"
                    )
                }else if(6<startMonth && startMonth<=9 && 9<endMonth && endMonth<=12){
                    arr.push(
                        i+"年"+"第三季度",
                        i+"年"+"第四季度"
                    )
                }else if(9<startMonth && startMonth<=12 && 9<endMonth && endMonth<=12){
                    arr.push(
                        i+"年"+"第四季度"
                    )
                }
            }else{
                // 开始的那年
                if (i == startYear) {
                    if(startMonth<=3){
                        arr.push(
                            startYear+"年"+"第一季度",
                            startYear+"年"+"第二季度",
                            startYear+"年"+"第三季度",
                            startYear+"年"+"第四季度"
                        )
                    }else if(startMonth>3&&startMonth<=6){
                        arr.push(
                            startYear+"年"+"第二季度",
                            startYear+"年"+"第三季度",
                            startYear+"年"+"第四季度"
                        )
                    }else if(startMonth>6&&startMonth<=9){
                        arr.push(
                            startYear+"年"+"第三季度",
                            startYear+"年"+"第四季度"
                        )
                    }else{
                        arr.push(
                            startYear+"年"+"第四季度"
                        )
                    }
                }
                if(i>startYear&&i<endYear){
                    arr.push(
                        i+"年"+"第一季度",
                        i+"年"+"第二季度",
                        i+"年"+"第三季度",
                        i+"年"+"第四季度"
                    )
                }
                // 结束的那年
                if(i==endYear){
                    if(endMonth<=3){
                        arr.push(
                            endYear+"年"+"第一季度"
                        )
                    }else if(endMonth>3&&endMonth<=6){
                        arr.push(
                            endYear+"年"+"第一季度",
                            endYear+"年"+"第二季度"
                        )
                    }else if(endMonth>6&&endMonth<=9){
                        arr.push(
                            endYear+"年"+"第一季度",
                            endYear+"年"+"第二季度",
                            endYear+"年"+"第三季度"
                        )
                    }else{
                        arr.push(
                            endYear+"年"+"第一季度",
                            endYear+"年"+"第二季度",
                            endYear+"年"+"第三季度",
                            endYear+"年"+"第四季度"
                        )
                    }
                }
            }

        }
       return arr;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值