纵有疾风起
人生不言弃

js获取当前日期是本月第几周,月初如果不足一周归于上月最后一周

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

js获取当前日期是本月第几周,月初如果不足一周归于上月最后一周插图
本月第几周.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

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » js获取当前日期是本月第几周,月初如果不足一周归于上月最后一周

分享到: 生成海报
avatar

评论 抢沙发

评论前必须登录!

立即登录   注册

切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活