条件:打印 月份-第几周 若本月前七天不在全在第一周则这一周计入到上月第五周。
分析:
1.条件判断分别处理前七天和大于等于七天的数据;
2.当前月的7号是关键,如果在周天就不需要放到上月,如果不在周天就要条件判断。
3.日期函数理解
时间函数:
创建 Date 对象的语法:var myDate=new Date()
Date()-返回当日的日期和时间
getDate()-从Date对象返回一个月中的某一天(1-31)
getDay()-从Date对象返回一个周内的某一天(0-6对应周天到周六)
getMonth()-从Date对象月份(0-11)
getFullYear()/getYear()-从Date对象以四位数字返回年份
parse()-返回1970年1月1日午夜到指定日期(字符串)的毫秒数(时间戳)。
setDate()-设置Date对象月中的某一天
<!-- 第几月的第几周 打印结果: 月份-第几周 若本月前七天不在全在第一周则这一周计入到上月第五周,余下的周要减一--> <template> <div> <p>week of month!</p> </div> </template> <script> export default { created() { this.getWeek("Sun Aug 31 2019 18:05:38 GMT+0800 (中国标准时间)") }, methods: { getWeek(dateStr) { // Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数, dateStr = Date.parse(dateStr); // 转成 date 对象 let tarDate = new Date(dateStr); let tarDay = tarDate.getDay() == 0 ? 7 : tarDate.getDay(); // 目标日期是周几 (1-7) console.log(tarDate.getDate()) // 第几周 let tarWeek = Math.ceil((tarDate.getDate()/7)); console.log("tarWeek", tarWeek) // getMonth() 返回 (0-11) let tarMonth = tarDate.getMonth() + 1; // 不能 let tarDate7 = tarDate tarDate7改变后这个也会变 let tarDate7 = new Date(dateStr); tarDate7.setDate(7); let tarDate7Day = tarDate7.getDay(); // 当月 7 号是周几 (0-6) if (tarDate7Day == 0) { tarWeek; } else { if (tarDate.getDate() > 7) { console.log("> 7"); tarWeek -= 1; } else { console.log("<= 7"); if (tarDate7Day < tarDay) { tarMonth = tarDate.getMonth(); tarWeek = 5; } else { tarWeek -= 1; } } } console.log(`${tarMonth}-${tarWeek}`); } } } </script>