首页 > 其他分享 >Js获取当前是本年度第几周、周开始日期结束日期

Js获取当前是本年度第几周、周开始日期结束日期

时间:2023-05-23 11:55:04浏览次数:53  
标签:几周 Js 日期 let date lastday fistday oneday

js获取今年第几周和获取周的开始和结束日期

 

获取今年第几周

// 页面初始时获取当前是本年第几周
function getYearWeek(a, b, c) {
     //a为年 b为月 c为日
     /*  
         date1是当前日期  
         date2是当年第一天  
         d是当前日期是今年第多少天  
         用d + 当前年的第一天的周差距的和在除以7就是本年第几周  
     */
     var date1 = new Date(a, parseInt(b) - 1, c),
         date2 = new Date(a, 0, 1),
         d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
     return Math.ceil((d + (date2.getDay() + 1 - 1)) / 7);
 }

 // 页面初始需要的周和月的数据
 const date = new Date();
 // 获取当前第几周
 let week =
     date.getFullYear() +
     "-" +
     getYearWeek(
         date.getFullYear(),
         Number(date.getMonth()) + 1,
         date.getDate()
     );
 //获取周的开始结束日期
 let wStartEnd = week_date(week);

周的开始和结束日期

// 第n年的第n周,获取开始和结束时间 (星期一为一周的开始)
function week_date(weekstr) {
    let year = weekstr.split("-")[0];
    let weekNo = weekstr.split("-")[1];
    // 此年1号是星期几
    // console.log('调用时传的',year,weekNo);
    let oneday = new Date(year + "-01-01").getDay(); //0-6
    // console.log(oneday);
    // 方便计算,当为星期天时为7
    if (oneday == 0) {
        oneday = 7;
    }

    let one_fistday;
    let one_lastday;
    // 如果1号刚好是星期一
    if (oneday == 1) {
        one_fistday = year + "-01-01";
        one_lastday = year + "-01-07";
    } else {
        let jj = 8 - oneday;
        one_fistday =
            year -
            1 +
            "-12-" +
            (31 - oneday + 2 > 9 ? 31 - oneday + 2 : "0" + (31 - oneday + 2));
        one_lastday = year + "-01-" + (jj > 9 ? jj : "0" + jj);
    }

    let fistday;
    let lastday;
    // 如果刚好是第一周
    if (weekNo == 1) {
     // 在原文档进行了修改 fistday = addDate(one_fistday, 7); lastday = addDate(one_lastday, 7); } else {
    // 在原文档进行了修改 fistday = addDate(one_lastday, (weekNo - 1) * 7 + 1); lastday = addDate(one_lastday, weekNo * 7); } console.log(fistday, lastday); return [fistday, lastday]; } //日期加减法 date参数为计算开始的日期,days为需要加的天数 //格式:addDate('2017-1-11',20) function addDate(date, days) { var d = new Date(date); d.setDate(d.getDate() + days); var m = d.getMonth() + 1; return ( d.getFullYear() + "-" + (m > 9 ? m : "0" + m) + "-" + (d.getDate() > 9 ? d.getDate() : "0" + d.getDate()) ); } console.log("查看", week_date("2023-21"));

其中两个标注的地方通过原文进行了修改,参考原文[链接:https://blog.csdn.net/weixin_61079989/article/details/125946238]

 

标签:几周,Js,日期,let,date,lastday,fistday,oneday
From: https://www.cnblogs.com/T8888/p/17422959.html

相关文章

  • vueh5实现双指操作图片或者内容放大缩小拖动 (hammerjs插件)
    可在mounted钩子直接使用通过使用Hammer.js库来实现手势操作,包括缩放、拖动和双击重置功能1.在模板中添加了一个<div>元素,并为其设置了ref属性,以便在代码中引用该元素。2.在mounted生命周期钩子函数中,通过this.$refs.main获取之前设置的<div>元素。3.创建了一个新的Hammer实例,传入......
  • 获取下一个月日期
    publicstaticfinalStringgetNextMonth(StringqueryMonth)throwsParseException{SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM");Calendarcalendar=Calendar.getInstance();//设置为当前时间DateFormatdateFormat=newSimpleDa......
  • js 关于 replace 取值、替换第几个匹配项
    〇、前言在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。一、替换第一个匹配项字符串替换letstrtest="0123测试replace456测试replace789测试replace0"console.log("原字符串:"+strtest)letoutstr=strtest.replace("测试","c......
  • map判断是否存在某个key,以及遍历jsonobject
    if(filter.containsKey("nodeData")){JSONObjectjsonObject=(JSONObject)filter.get("nodeData");Iteratoriterator=jsonObject.keySet().iterator();while(iterator.hasNext()){Stri......
  • js 连接数据库 提示:ActiveXObject is not defined
    ActiveXObjectisnotdefined最近比较闲,上班瞎捣鼓一下,没想到报错了,提示ActiveXObjectisnotdefined大概是在js连接数据库时new对象使用的是ActiveXObject完事儿使用的浏览器是edge,但是在ie就没有问题,那么估计就是浏览器的设置问题点开edge的设置然后在默认浏览器的侧栏......
  • JS中的undefined 与 null
    在JavaScript中,undefined和null是两个特殊的值,用于表示缺失或空值。undefined是一个表示未定义或未赋值的原始值。它在以下情况下使用:1.变量声明了但未初始化时,默认为undefined。letx;console.log(x);//undefined  2.访问对象属性或数组元素时,如果该......
  • java基于joda-date实现获取两个时间段对应类型的所有时间,比如说两年之间的所有日期,两
    /***获取两个时间段对应类型的所有时间**@paramtype日期类型,包含day、month、year*@parambeginTime开始时间*@paramendTime结束时间*@return*/publicstaticList<String>getBetweenTime(Stringtype,String......
  • C语言 加入16进制格式 编译日期 编译时间
      要在C语言中打印16进制格式的编译日期和时间,可以这样实现:#include<stdio.h>intmain(){printf("Thisprogramwascompiledon0x%xat0x%x.\n",__DATE__,__TIME__);return0;} __DATE__和__TIME__都是以十进制格式定义的,我们在打印时使用0x%......
  • 读取数据库JSON格式数据信息处理办法记录
    遇到的问题:现有代码如下defListQuery(self):sql01="SELECTcontentFROMzt_user_customdata\WHERErealname='alarm-server'ANDaccount='alarm-server'"result01=self.CommonQueryFunc(sql01)result02=str(resu......
  • js中实现文件上传下载的三种解决方案(推荐)
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续......