//獲取當前日期的周一 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; }