最近开发遇到一个需求点,获取当前日期属于本月第几周,比如获取到2018年8月27日属于8月的第四周。
在网上找了一大堆资料,但是在2月到3月时总会出问题。
自己经过一番调试,终于能准确的获取到某一日属于本月的第几周。如果是在月初的头7天不足一周时,会把月初这几天归于上月最后一周。
先看下效果图

本月第几周.png
可以看出2018年3月1号是周四,应该属于2月的最后一周。也就是2月的第4周。
下面贴出来代码
<script> function getWeekStr(str) { // 将字符串转为标准时间格式 str2 = Date.parse(str); let date = new Date(str2); let month = date.getMonth() + 1; let week = getWeekFromDate(date); if (week === 0) {//第0周归于上月的最后一周 month = date.getMonth(); let dateLast = new Date(); let dayLast = new Date(dateLast.getFullYear(), dateLast.getMonth(), 0).getDate(); let timestamp = new Date(new Date().getFullYear(), new Date().getMonth() - 1, dayLast); week = getWeekFromDate(new Date(timestamp)); } let time = month + "月第" + week + "周"; return time; } function getWeekFromDate(date) { // 将字符串转为标准时间格式 let w = date.getDay();//周几 if (w === 0) { w = 7; } let week = Math.ceil((date.getDate() + 6 - w) / 7) - 1; return week; } console.log("2018-02-3---" + getWeekStr("2018-02-3")); console.log("2018-02-4---" + getWeekStr("2018-02-4")); console.log("2018-02-5---" + getWeekStr("2018-02-5")); console.log("2018-02-12---" + getWeekStr("2018-02-12")); console.log("2018-02-19---" + getWeekStr("2018-02-19")); console.log("2018-02-28---" + getWeekStr("2018-02-28")); console.log("2018-03-1---" + getWeekStr("2018-03-1")); console.log("2018-03-5---" + getWeekStr("2018-03-5")); console.log("2018-08-27---" + getWeekStr("2018-08-27"));</script>
代码其实很简单。就是一些需要考虑到的点考虑清楚,就可以了。
以后再有需要获取当前日期属于本月第几周的需求可以直接把我上面的代码拿来直接用,如果需求有变动也可以直接改一下就可以了。
文章转载于:https://www.jianshu.com/p/851e0a258101
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~