按周切换的vue移动端学生课表日期

效果图

showCourse() {//初始化判断当前日期所在的周次
        var dateArray = [];
        //开始查询日期
        var date =JSON.parse(JSON.stringify(new Date(2020,2,2)));//设置初始开学日期,注意:这里第二个参数2表示3月,即开学日期为2019年3月2日
        date = new Date(date)
        var dateTemp;
        //第一周天数不确定
        if(date.getDay() ==1){//星期一
            for(var i=1;i<8;i++){//默认星期一为每周的起点
                if(i==1){//如果是每周的星期一,需要添加周期,其他的每天加一就行了,因为data的值会跟着setDate()而发生变化。
                    date.setDate(date.getDate());//js中字符串和整型是可以做整数减法的,但加法就是字符串相加
                }
                else{
                    date.setDate(date.getDate()+1);
                }
                //date.getMonth()是从0开始的,所以实际月份需要+1
                dateArray.push(date.getFullYear() +"年"+ (date.getMonth()+1) +"月"+ date.getDate()+"日")
                this.dateArr = dateArray
            }
        }else if(date.getDay() ==0){//星期天
            for (var i = 0; i < 8; i++) {
                dateTemp = date.getFullYear() +"年"+(date.getMonth() + 1) + "月" + date.getDate()+"日";
                dateArray.push(dateTemp);
                date.setDate(date.getDate() + this.flag);
            }
                this.dateArr = dateArray.slice(1)
        }else{//除了星期天
            for (var i = 0; i < 7; i++) {
                dateTemp = date.getFullYear()+"年"+(date.getMonth() + 1) + "月" + date.getDate()+"日";
                dateArray.push(dateTemp);
                date.setDate(date.getDate() + this.flag);
            }
                this.dateArr = dateArray.slice(0,7-date.getDay()+1)
        }
        this.nDate = new Date()
        var styfrom_start = Math.ceil((this.nDate - new Date(this.sDate))/(24*60*60*1000)) //现在日期到开学日期天数判断所在周数
        this.weekNum = Math.ceil((styfrom_start-this.dateArr.length)/7)+1

        var approvedates = this.dateArr[this.dateArr.length-1].replace(/[年月]/g,"-");
        var approvedate = approvedates.replace(/[日]/,"");
        var afterDate = new Date(approvedate)
        //获取所在周数的日期
        for (var i = 0; i < this.weekNum; i++) {
                dateTemp = afterDate.getFullYear() +"-"+(afterDate.getMonth() + 1) + "-" + afterDate.getDate();
                this.nowArr.push(dateTemp);
                afterDate.setDate(afterDate.getDate() + this.weekDay);
            }
            var timeStr1 =new Date(this.nowArr[this.nowArr.length-1]) //所在周数最后天数
            var timeStr2 =new Date(this.nowArr[this.nowArr.length-2])//所在周数第一天数
            var beforeDate =new Date(timeStr2.setDate(timeStr2.getDate() + 1))
            if((timeStr1 - new Date(this.eDate.replace(/[年月]/g,"-").replace(/[日]/,""))>0)){
              this.renderArr[1] = this.eDate
            }else{
              this.renderArr[1] = timeStr1.getFullYear() +"年"+(timeStr1.getMonth() + 1) + "月" + timeStr1.getDate()+ '日'
            }
            this.renderArr[0] = beforeDate.getFullYear() +"年"+(beforeDate.getMonth() + 1) + "月" + beforeDate.getDate()+ '日'
            this.getClass()
    },
    nextWeek(){//下一周
        if(this.renderArr[1]== this.eDate){
            dsf.layer.toast("这已经是这学期最后一周了!")
            return
        }
        this.weekNum++
        var approvedates = this.renderArr[1].replace(/[年月]/g,"-");
        var approvedate = approvedates.replace(/[日]/,"");
        var dateTemp;
        var dateArray = []
        var date = new Date(approvedate)
        for (var i = 0; i < 7; i++) {
            date.setDate(date.getDate() + this.flag);
            dateTemp = date.getFullYear()+"年"+(date.getMonth() + 1) + "月" + date.getDate()+"日";
            dateArray.push(dateTemp);
        }
        this.dateArr = dateArray
        this.renderArr[0] = this.dateArr[0]
        for(var j=0;j<this.dateArr.length;j++){
            if(this.dateArr[j] == this.eDate){
              this.renderArr[1] = this.eDate
              this.dsf.layer.toast('这已经是这学期最后一周了')
              return 
            }
        }
        this.renderArr[1] = this.dateArr[this.dateArr.length-1]
    },
    lastWeek(){//上一周
        if(this.weekNum > 1){this.weekNum--}
        else{
            dsf.layer.toast("这是这学期的第一周!")
            return
        }
        var approvedates = this.renderArr[0].replace(/[年月]/g,"-");
        var approvedate = approvedates.replace(/[日]/,"");
        var dateTemp;
        var dateArray = []
        var date = new Date(approvedate)
        date.setDate(date.getDate() - 7);
        for (var i = 0; i < 7; i++) {
            dateTemp = date.getFullYear()+"年"+(date.getMonth() + 1) + "月" + date.getDate()+"日";
            date.setDate(date.getDate() + this.flag);
            dateArray.push(dateTemp);
        }
        this.sDate = new Date(this.sDate)
        if(this.sDate.getDay() == 0){//第一周考虑开学日期是否为星期天
          this.startDate = this.sDate.getFullYear()+"年"+(this.sDate.getMonth() + 1) + "月" + (this.sDate.getDate()+1)+"日"
        }else{//第一周开学日期除了星期天之外的
          this.startDate = this.sDate.getFullYear()+"年"+(this.sDate.getMonth() + 1) + "月" + this.sDate.getDate()+"日"
        }
        if(this.weekNum == 1){//第一周天数可能少于七天
           var week_one = dateArray.findIndex((v)=>{
                 return v == this.startDate
           })
           week_one >= 0 ? 
           this.dateArr = dateArray.slice(week_one) : ''
        }else{
            this.dateArr = dateArray
        }
        this.renderArr[0] = this.dateArr[0]
        this.renderArr[1] = this.dateArr[this.dateArr.length-1]
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值