js中计算当前日期是当年的第xx周(涉及跨年) 您所在的位置:网站首页 七十二天是多少周 js中计算当前日期是当年的第xx周(涉及跨年)

js中计算当前日期是当年的第xx周(涉及跨年)

2024-07-08 21:07| 来源: 网络整理| 查看: 265

遇到一个问题, 第一周是从一月一日开始计算, 

但一月一日并不一定就是周一,意味着,这一周将包含两部分,一部分属于上一年度最后几天, 一部分属于新一年最初几天,如下图

 

解决办法:

1、计算出第一年的第一天(1月1日)是星期几,比如这里,2021.1.1 为星期5,getDay() = 5

2、根据获得的星期数,计算出1月1日所在周的周日,

3、计算当前日期,与上面算出的周日之间相差天数,除以7,获得周数

4、若1月1日为周一, 则从1.1~1.7为第一周

5、若1月1日为周二至周日, 则1.1~1.6日都属于上一个年度的最后一周(52周)

 

 

 

//取当前时间 var today = new Date(2017,11,31); var firstDay= new Date(today.getFullYear(),0,1); //当前这一年的第一天(1月1日) var dayOfWeek = firstDay.getDay(); //获得 1月1日是星期几 var spendDay=0; // 默认 1月1日 是星期天,属于上一个年度最后一周 ,与下一周周一相差0天 if (dayOfWeek > 1) { // 若1月1日不是星期1 ,也不是星期天。 spendDay=7-dayOfWeek; //比如星期五, 7-5=2 与下一周的星期一 相差2天(周6、周日) }else if(dayOfWeek == 1){ //若 1月1日就是星期1, spendDay= -1; // 这里特殊处理为 -1,后面计算天数的时候,需要以上一年度最后一周的周日作为计算基数。 } firstDay= new Date(today.getFullYear(),0,1+spendDay); //上一个年度最后一周的周日。也可理解为lastday var d=Math.ceil((today.valueOf() - firstDay.valueOf() )/86400000); //计算相差天数 if (d 1) { spendDay=7-dayOfWeek; }else if(dayOfWeek == 1){ spendDay= -1; } document.write("spendDay="+spendDay+""); firstDay= new Date(today.getFullYear(),0,1+spendDay); //最后一天。 document.write("firstDay="+firstDay+""); var d=Math.ceil((today.valueOf() - firstDay.valueOf() )/86400000); document.write("d="+d+""); var ddd = (today.valueOf() - firstDay.valueOf() ); document.write("ddd="+ddd+""); var ccc= ddd/86400000; document.write("ccc="+ccc+""); if (d


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有