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

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

解决办法:

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); //上一个年度最后一周的周日。也可理解为lastdayvar d=Math.ceil((today.valueOf() - firstDay.valueOf() )/86400000); //计算相差天数if (d<=0){          //如果相差小于等于0 ,年初几天,为上一年度最后一周(第52周)var result=52;var resultYear=today.getFullYear() -1;  //上一年度}else{    var result=Math.ceil(d/7);var resultYear=today.getFullYear();}

以下是包含变量输出的 测试代码:

//取当前时间var today = new Date(2017,11,31);document.write("today="+today+"</br>");var firstDay= new Date(today.getFullYear(),0,1); //一年的第一天document.write("firstDay="+firstDay+"</br>");var dayOfWeek = firstDay.getDay();document.write("dayOfWeek="+dayOfWeek+"</br>");var spendDay=0;if (dayOfWeek > 1) {spendDay=7-dayOfWeek;}else if(dayOfWeek == 1){spendDay= -1;}document.write("spendDay="+spendDay+"</br>");firstDay= new Date(today.getFullYear(),0,1+spendDay); //最后一天。document.write("firstDay="+firstDay+"</br>");var d=Math.ceil((today.valueOf() - firstDay.valueOf() )/86400000);document.write("d="+d+"</br>");var ddd = (today.valueOf() - firstDay.valueOf() );document.write("ddd="+ddd+"</br>");var ccc= ddd/86400000;document.write("ccc="+ccc+"</br>");if (d<=0){var result=52;var resultYear=today.getFullYear() -1;  //上一年度}else{    var result=Math.ceil(d/7);var resultYear=today.getFullYear();}document.write("result="+result+"</br>");

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

  1. SQL server 计算当前日期为一年中的第几周,以周五/周一作为一周中的第一天

    这个问题对于小白的我来说,当时找了好久才解决,所以在这里记录一下. 要计算当前日期为一年中的第几周,以周五作为一周中的第一天 首先设置每周的起始天为周五(因为默认是从周天开始的) SET DATEFI ...

  2. oracle 计算当前日期是今年的第几周的计算方法

    一.oracle 计算当前日期是今年的第几周的计算方法(以周六为每周第一天为例) 完整代码: select * from ( SELECT sysdate , LEVEL 周次,(TRUNC(sysd ...

  3. js中计算两个时间差

    通过计算两个时间差的例子,进一步深入实践Date对象函数以及函数调用与封装 下面详细描述如何调用封装的日期函数 步骤一:编写计算两个日期对象相差的天数的函数.参数:两个日期对象 步骤二:编写传入两个时 ...

  4. 计算当前日期是本年的第几周

    首先,需要了解一个国际标准:ISO8601,该标准是国际标准化组织用来定义日期和时间的表示方法,全称是<数据存储和交换形式·信息交换·日期和时间的表示方法>.其中有关第几周的计算,在WIK ...

  5. c#中计算当前时间是今年第几周 与ORACLE数据库中ww转化相同

    为了在程序中生成的当前时间是第几周的判断结果与ORCAL中的相同.因为在做周报 ,周报统计的数据计算周数是数据库算的,列表页面又是C#定时任务. 原有的C#计算当前时间是第几周的方法是这样的 Greg ...

  6. java 获取当前第几周_java 计算当前日期是今年的第几周 和 该周的开始日期及结束日期...

    //获取一个Calendar对象 Calendar calendar = Calendar.getInstance(); //设置星期一为一周开始的第一天 calendar.setFirstDayOf ...

  7. JS中获取当前日期(年-月-日)

    很多时候我们需要在前台获取当前日期,但是可能后台并不能传过来,这个时候就需要用JS代码来获取当年日期,目前只总结出一种获得(yyyyMMdd)的日期格式,JS代码如下: / 获取当前日期 var da ...

  8. 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>如何计算扑克牌中的顺子.对子.半顺.豹子.杂六</tit ...

  9. js中计算一个时间点加上一个时间段后的时间

    在实际的项目中,我们常常有这样的需求,计算某个时间点加上某个时间段后(几天几小时几分钟)的时间.如: 2016-04-05 09:29:15 要加上2天4小时5分钟后的时间: 即:2016-04-07 ...

最新文章

  1. 分布式配置中心disconf第三部(基于xml配置的实现原理)
  2. 【arduino】童芯派彩屏显示图片,图片取模后在TFT液晶显示
  3. php网页跳转无法获取session值
  4. mysql过程异常处理_mysql数据库存储过程异常处理
  5. Serverless 实战 —— 从 DevOps 到 Serverless
  6. (三)混合边缘AI人脸对齐
  7. AtCoder 杂题训练
  8. ERROR: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够的解决办法
  9. JavaScript函数的arguments(2)
  10. latex中设置标题左对齐
  11. Linux有问必答:如何在命令行创建一个MySQL数据库
  12. 字词拼音查询易语言代码
  13. PBRT-V3体渲染笔记
  14. Discuz漏洞复现
  15. 祝福新年快乐的c语言代码,“春节十二响”C语言代码开源了,命名是亮点
  16. echarts数字云
  17. CTF-reverse菜鸡想要走出菜狗设计的迷宫
  18. 斐迅路由器刷华硕固件
  19. shader实例:实现类似宝可梦 Pokemon 的战斗转场
  20. 用PC3000和HDD Unlock解笔记本硬盘密码

热门文章

  1. npm基本操作及命令详解
  2. Python Web实战:Flask + Vue 开发一个漂亮的词云网站
  3. SDL_CreateWindow函数
  4. Django+scrapy,scrapy爬取的数据通过Django的模型保存到数据库
  5. 噪音性耳鸣如何防治?
  6. 动物之森服务器维护时间,动物之森再生资源多久刷新 动物之森资源刷新规律一览...
  7. Map的 entrySet() 方法详解及用法
  8. 搜索的焦灼战争与搜狗的星辰大海
  9. delphi XE同步对话框、异步对话框、平台特性对话框单元FMX.DialogService.pas
  10. 20191012——POI设置单元格自动行高(思路)