一年中的某周转换成当前周星期一和星期日的日期

        weekstr是字符串“年份周数”如“20201”或者“202011”,将字符串导入函数format,将“20261”和“20211”做为例子带入函数,下面2张图为2021年和2026年日历1月的图片。该方法每周从星期一到星期日规定跨年如果下年满4天为第1周,如果下年不满4天就为去年的最后一周,2026年第一周就是2025.12.29~2026.1.4,2021年第一周就是2021.1.4~2021.1.10。

 //周数换成日期输入组件显示正确时间输入“20261”,“20211”

    formatDay(weekstr) {

     //切割字符串将年份切割出来year="2021"和year="2026"

      let year = weekstr.slice(0, 4);

     //切割周数weekNo="1" 和 weekNo="1"

      let weekNo = weekstr.slice(4, 7);

      //0-6获得输入当年1月1号的星期几,2026的1月1号是星期四,2026对应的oneday=4。2021的1月1号是星期五,2021对应的oneday=5。

      let oneday = new Date(year + '-01-01').getDay();

    // 方便计算,当为星期天时为7

      if (oneday == 0) {

        oneday = 7

      }

      let one_fistday;//规定第一周的第一天

      let one_lastday;//规定第一周的最后一天也就是第七天

     // 如果1号刚好是星期一,计算第一周的日期

      if (oneday == 1) {

        one_fistday = year + '-01-01'

        one_lastday = year + '-01-07'

      } else { 

       //如果1号不是星期一就分为2种情况,一种为跨年下年不满4天,则为去年的最后一周,也就是2021年这种情况,第一周为2021-1-4~2021-1-10,oneday=5。另一种为跨年满4天,也就是2026这周情况,第一周为2025-12-29~2026-1-4, oneday=4。

      //if这种就是第二种情况,输入oneday=4

        if (oneday < 5) {

      //jj = 4

          let jj = 8 - oneday 

      //2026年第一周的第一天one_fistday=2025-12-29,one_lastday=2026-01-04

          one_fistday = (year - 1) + '-12-' + (31 + jj - 6)

          one_lastday = year + '-01-' + (jj > 9 ? jj : '0' + jj)

        } else {

      //这种就是第一种情况,输入oneday=5

      //aa =4

          let aa = 9 - oneday

      //2021年第一周的第一天one_fistday=2021-01-04,one_lastday=2021-01-10;

          one_fistday = (year) + '-01-' + '0' + aa;

          one_lastday = (year) + '-01-' + (aa + 6 < 10 ? '0' + (aa + 6) : aa + 6);

        }

      }

      //规定fistday是输入周数的星期一,lastday是输入周数的星期日

      let fistday;

      let lastday;

      // 如果刚好是第一周,

      if (weekNo == 1) {

        fistday = one_fistday

        lastday = one_lastday

      } else {

      //计算输入周的星期一和星期日

        fistday = this.addDate(one_fistday, (weekNo-1) * 7 )

        lastday = this.addDate(one_lastday, (weekNo-1) * 7)

      }

//输出输入周的星期一和星期日

      return [fistday,lastday]

    },

//计算输入周的星期一和星期日的函数

    addDate(date, days) {

      var d = new Date(date);

      d.setDate(d.getDate() + days);

      var m = d.getMonth() + 1;

      return d.getFullYear() + '-' + (m > 9 ? m : '0' + m) + '-' + (d.getDate() > 9 ? d.getDate() : '0' + d.getDate());

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值