其中关于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;
本文介绍如何使用JavaScript确定当前日期是今年的第几周。参照相关文章,通过获取当前日期对应的周六日期及当年的第一天日期,计算两者的差值除以7来得出周数。核心思路包括获取周六日期、获取年初第一天日期,然后进行计算。

672

被折叠的 条评论
为什么被折叠?



