獲取當前周的周一,根據周數獲取日期,根據日期獲取周數


  //獲取當前日期的周一
  getMonday(dd) {
    let week = dd.getDay(); //獲取時間的星期數,周日是0
    let minus = week ? week - 1 : 6;
    dd.setDate(dd.getDate() - minus); //獲取minus天前的日期
    let y = dd.getFullYear();
    let m = dd.getMonth() + 1; //獲取月份
    m = m < 10 ? ('0' + m) : m;
    let d = dd.getDate();
    d = d < 10 ? ('0' + d) : d;
    return y + "-" + m + "-" + d;
  },
  //根據周獲取當前周最后一天,再獲取那天的所在周的周一
  //"week:2018-W35"  return:2018-8-27
  getDayForWeek(week){
    if (week.length < 0) {
      return false;
    }
    let myDate = new Date(week.split("-")[0], 0, 1);//設置當前年的1月1日
    let myweek = myDate.getDay(); //獲取時間的星期數,周日是0
    myweek = myweek ? myweek - 1 : 6;
    //如果1號<周五,則為第一周,>周五則為去年最后一周
    if (myweek < 4) {
      //前移日期
      myDate.setDate(myDate.getDate() - myweek);
    } else {
      //后移日期
      myDate.setDate(myDate.getDate() + 7 - myweek);
    }
    myDate.setDate(myDate.getDate() + parseInt(week.split("W")[1] - 1) * 7); //獲取周的加成
    return this.getMonday(myDate);
  },
  //獲取日期在當前年的周數
  //day: 2018-8-27 week:2018-W05
  getWeekForDay(day){
    let da = '';
    if (day == undefined) {
      let now = new Date();
      da = this.getMonday(now);
    } else {
      da = day;
    }
    //(當前日期-當年第一周第一天)/7 = 周次
    let date1 = new Date(Date.parse(da));//當前日期
    date1 = this.getMonday(date1);
    date1 = new Date(Date.parse(date1));
    date1.setDate(date1.getDate() + 3); //獲取當前日期的周四(針對每年第一個月不同周次的計算)

    let date2 = new Date(date1.getFullYear(), 0, 1); //當年的1月1號
    let dateWeekNum = date2.getDay();//獲取時間的星期數,周日是0
    dateWeekNum = dateWeekNum ? dateWeekNum - 1 : 6;
    //如果1號<周五,則為第一周,>周五則為去年最后一周
    if (dateWeekNum < 4) {
      //前移日期(本周一)
      date2.setDate(date2.getDate() - dateWeekNum);
    } else {
      //后移日期(下周一)
      date2.setDate(date2.getDate() + 7 - dateWeekNum);
    }
    //Math.round 四舍五入到整數
    let d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000); //86400000==1000毫秒 * 60秒 * 60分鍾* 24小時==天數
    //得到年數周數
    let year = date1.getFullYear();
    //向上取整
    let week = Math.ceil((d + 1) / 7);
    week = week < 10 ? ('0' + week) : week;
    console.log(year + "-W" + week);
    return year + "-W" + week;
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM