JS实现当前日期是第几周

本文介绍如何使用JavaScript确定当前日期是今年的第几周。参照相关文章,通过获取当前日期对应的周六日期及当年的第一天日期,计算两者的差值除以7来得出周数。核心思路包括获取周六日期、获取年初第一天日期,然后进行计算。
该文章已生成可运行项目,

主要参考这篇文章:https://blog.csdn.net/u012976879/article/details/88718620?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

其中关于JS date相关知识,可参考:

https://blog.csdn.net/qq_42765800/article/details/84893934

 

大神写的很好,不过对于小白而言,还是需要多多了解思路的。

目标:实现判断当前日期是处于今年的第几周,其中周的判断是以周日开始,周六结束,每7天一周。

核心思想:(当前日期的周六日期-当年第一天的日期)/ 7 = 所处周数

路径:1、获取当前日期的周六日期;2、获取当年的第一天日期;3、两者相减再除以7

代码:


/* 

代码功能:获取当前年+所处周数
核心思想是:首先获得当前日期的周六日期,然后按照周六的日期来计算是第几周
周的定义:从周日开始,周六结束;每7天为一周

*/
function getWeek (dateTime) {
    // 获取从1970年到现在的时间毫秒数
    var temp_ms = dateTime.getTime();
    let temptTime = new Date(temp_ms);
    // 今天周几,如果是周日,则设为7
    let weekday = temptTime.getDay() & 7;
    // 周1+5天=周六,得到本周6的日期,之所以以每周末的日期为基准,不能用每周日的日期为基准来计算
    // 当前日期的周六的日期
    temptTime.setDate(temptTime.getDate() - weekday + 1 + 5);
    // 每年的第一天,年/1/1,参数之中,0代表月份,介于0(1月) ~11(12月)之间的整数,getDay获取星期几同理
    // 第一天的日期
    let firstDay = new Date(temptTime.getFullYear(), 0, 1);
    let dayOfWeek = firstDay.getDay();
    let spendDay = 1;
    // 如果第一天不是星期日,那么就找到下一个星期日作为开始
    if (dayOfWeek != 0) {
      spendDay = 7 - dayOfWeek + 1;
    }
    let yearOfW = temptTime.getFullYear();
    firstDay = new Date(yearOfW, 0, 1 + spendDay);
    /*
    1.Math.ceil 取大于等于所给值的最小整数
    2.86400000是换算到天的基数,js的时间差值为时间戳,即毫秒数
      1000毫秒 * 60秒 * 60分钟* 24小时 = 86400000
    3.temptTime是当前日期,firstDay是当年第一天,周数计算公式就是(当前日期-第一天天数)/7 就是本年的第几周
    4.d是差距天数,res是周数
    */
    let d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000);
    let res = Math.ceil(d / 7) + 1;
    let weekOfNow = firstDay.getFullYear().toString()+res.toString();
    return weekOfNow;
}
function processX(xdata){ 
    if (xdata.length == 5){
        xdata = xdata.slice(0,4) + '0' + xdata.slice(4);
    }
    return xdata;
}
var cur_dt = new Date();
var curWeek = getWeek(cur_dt);
curWeek = processX(curWeek);
result = curWeek;

 

本文章已经生成可运行项目
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值