显示当前周 以及当前周前后半年的周次

 //判断年有多少周次
 // Y 传的参数为年份 2019
    getYearWeeks(Y){
        var S = Y + '-' + '01' + '-' + '01' //一年的开始时间
        var E = Y + '-' + '12' + '-' + '31' //一年的结束时间
        let currentYearDays = this.isLeapYear(Y) ? 366 : 365
        let beforeDays = 7 - this.getDate(S)+1
        let afterDays = this.getDate(E)
        let vaildDays = currentYearDays - beforeDays - afterDays
        var weeks = (vaildDays / 7) + 1 //加的这一 若是这周是从星期三开始的 我减去了前面的天数
        return weeks
    },
    
    //判断是否是闰年
    isLeapYear(year) {
        if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
            // console.log(year + 'is leap year')
            return true

        } else {
            // console.log(year + 'is not leap year')
            return false
        }
    },
    
    //获取某年某月某日是星球几
    getDate(date) {
        let oDate = new Date(date)
        let day = oDate.getDay()
        switch (day) {
            case 0:
                // console.log('星期日')
                return 0
            case 1:
                // console.log('星期一')
                return 1
            case 2:
                // console.log('星期二')
                return 2
            case 3:
                // console.log('星期三')
                return 3
            case 4:
                // console.log('星期四')
                return 4
            case 5:
                // console.log('星期五')
                return 5
            case 6:
                // console.log('星期六')
                return 6
        }
    },
 //今天是今年的第几周
    getTodayWeek() {
        var d1 = new Date()
        var d2 = new Date()
        //下面是获取今年1月号是第几周
        var Y = d1.getFullYear()
        var resDate = Y + '-' + '01' + '-' + '01'
        var W = new Date(Date.parse(resDate)).getDay() //今年的1月1号周几
        //下面是获取今天是本年第几天
        d2.setMonth(0);
        d2.setDate(1);
        var rq = d1-d2;
        var s1 = Math.ceil(rq/(24*60*60*1000));

        //(今年的第一天在周数)/7 等于第几周
        var s2 = Math.ceil((s1+W)/7);
        // console.log("今天是本年第"+s1+"天,第"+s2+"周");//周日做为下周的开始计算
        return s2
    },
 //最后应该显示的周次数组
    getWeekly(todayWeek,yearWeek){
        var qianyi = [] //前一年
        var dangq = [] //当前周
        var houyinian = []// 后一年
        if(todayWeek >= 25){
            //则取当前周前25周 和后25周
            for (let i = yearWeek; i < yearWeek , i > todayWeek - 25 ; i--) {
                let week = new Date().getFullYear() + '-' +  (i)
                dangq.unshift(week)
            }

            //说明应该有下半年的周次
            if(yearWeek - todayWeek < 26){
                var number = 26 - (yearWeek - todayWeek)
                for (let j = 0; j < number ; j++) {
                    let week = (new Date().getFullYear() + 1 ) + '-' +  (j+1)
                    houyinian.push(week)
                }
            }
        }else{
            //则取前半年的
            //取1周  到 当前周后26周
            var weekNumber = ''
            if(todayWeek + 26 > yearWeek){
                weekNumber = yearWeek
            }else{
                weekNumber = todayWeek + 26
            }
            for (let i = 0; i < weekNumber; i++) {
                let week = new Date().getFullYear() + '-' +  (i+1)
                dangq.push(week)       
            }

            //判断前一年的周次
            if(yearWeek - 0 < 25){ 
                var number = 25 - (yearWeek - todayWeek)
                var lastNumber = this.getYearWeeks(new Date().getFullYear()-1)
                //判断前一年的总周次
                for (let j = 0; j > lastNumber - number,j < lastNumber; j--) {
                    let week = (new Date().getFullYear() - 1) + '-' +  (j)
                    qianyi.unshift(week)
                }
            }
        }
        var weekLy = (qianyi.concat(dangq)).concat(houyinian)
        return weekLy
},
//调用方法

//今年总周次数
  	var yearWeek = this.commonJs.getYearWeeks(new Date().getFullYear())
//当前日期是今年的第几周
   var todayWeek = this.commonJs.getTodayWeek()
//当前周前后半年的周次数组
   var weekLy = this.commonJs.getWeekly(todayWeek,yearWeek)
//示例 今天是 2020/11/16
最后的 weekLy 数组
["2020-23", "2020-24", "2020-25", "2020-26", "2020-27", "2020-28", "2020-29", "2020-30", "2020-31", "2020-32", "2020-33", "2020-34", "2020-35", "2020-36", "2020-37", "2020-38", "2020-39", "2020-40", "2020-41", "2020-42", "2020-43", "2020-44", "2020-45", "2020-46", "2020-47", "2020-48", "2020-49", "2020-50", "2020-51", "2020-52", "2021-1", "2021-2", "2021-3", "2021-4", "2021-5", "2021-6", "2021-7", "2021-8", "2021-9", "2021-10", "2021-11", "2021-12", "2021-13", "2021-14", "2021-15", "2021-16", "2021-17", "2021-18", "2021-19", "2021-20", "2021-21"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值