首页 > 其他分享 >js获取某个月的星期每周的集合

js获取某个月的星期每周的集合

时间:2024-12-09 10:09:37浏览次数:3  
标签:星期 const 每周 js date let currentDay Date new

先看返回的数据格式

 

 

//获取某个月的星期每周的集合,date所在的月份的
function getWeeksInMonth(date) {
  let year = date.getFullYear()
  let month = date.getMonth() + 1;
  const firstDayOfMonth = new Date(year, month - 1, 1);
  const lastDayOfMonth = new Date(year, month, 0);
  const weeks = [];
  const currentDay = new Date(firstDayOfMonth);
  let weekNumber = 0;
  const weekNumberCn = ["一", "二", "三", "四", "五", "六"]; // 最多六周
  let isEnd = true;
  while (isEnd) {
    const startOfWeek = new Date(currentDay);
    const endOfWeek = new Date(currentDay);
    // 获取本周的开始日期(周一)
    startOfWeek.setDate(currentDay.getDate() - currentDay.getDay() + (currentDay.getDay() === 0 ? -5 : 2));
    // 获取本周的结束日期(周日)
    endOfWeek.setDate(currentDay.getDate() - currentDay.getDay() + (currentDay.getDay() === 0 ? 1 : 8));
    let list = []//本周的日期集合
    const current = new Date(startOfWeek);
    while (current <= endOfWeek) {
      list.push(new Date(current).toISOString().slice(0, 10));
      current.setDate(current.getDate() + 1);
    }
    weeks.push({
      weekNumber: "第" + weekNumberCn[weekNumber] + "周",
      start: startOfWeek.toISOString().slice(0, 10),
      end: endOfWeek.toISOString().slice(0, 10),
      list: list,
    });
    weekNumber++;
    if (endOfWeek <= lastDayOfMonth) {
      currentDay.setDate(currentDay.getDate() + 7);
    } else {
      isEnd = false;
    }
  }
  return weeks;
}

  

标签:星期,const,每周,js,date,let,currentDay,Date,new
From: https://www.cnblogs.com/jiangbeixiaoqiao/p/18594307

相关文章

  • 怎样做到js无阻塞加载?
    在前端开发中,JavaScript的阻塞加载会严重影响网页的性能和用户体验。当浏览器解析HTML遇到<script>标签时,会停止解析HTML,优先下载并执行JavaScript代码,然后再继续解析HTML。如果JavaScript代码执行时间过长,就会导致页面渲染延迟,出现“白屏”现象。为了避免JavaScript......
  • 使用js实现变态跳台阶
    /***变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。**@param{number}n台阶数*@returns{number}跳法总数*/functionjumpFloor(n){//特殊情况处理:0级或1级台阶if(n<=1)......
  • 在 Vue 项目中,通常有两种方式来放置 JSON 文件
       放在public目录:如果你的JSON文件是静态的,不会经过任何处理,只是作为前端资源来读取(例如:一些配置文件、静态数据等),可以放在public目录中。这样做的好处是,文件不会被webpack处理,直接暴露在静态资源中。例如,你可以将JSON文件放在public/data/myfile.json,然后......
  • 什么情况下会出现js阻塞?
    JavaScript阻塞会发生在浏览器的主线程被JavaScript代码长时间占用,导致无法及时响应其他任务,例如渲染页面、处理用户输入等。这会导致页面加载缓慢,卡顿,甚至假死,严重影响用户体验。以下几种情况会导致JavaScript阻塞:长时间运行的JavaScript代码:复杂的计算、大量的......
  • 一般习惯把js写在`</body>`前,但有例外的情况吗?说说看
    是的,一般习惯把JavaScript代码放在</body>结束标签之前,这是为了确保在执行JavaScript代码之前,HTML文档的结构已经完全加载完毕。这样可以避免JavaScript代码操作尚未加载的DOM元素,从而导致错误。然而,确实存在一些例外情况,在这些情况下,将JavaScript代码放在<head>......
  • 使用js写一个批量上传文件的组件
    importReact,{useState}from'react';functionBulkUpload(){const[selectedFiles,setSelectedFiles]=useState([]);const[uploadProgress,setUploadProgress]=useState({});const[uploadStatus,setUploadStatus]=useState({});co......
  • 基于Java+SSM+JSP高校宿舍管理系统(源码+LW+调试文档+讲解等)/大学宿舍管理系统/高校
    博主介绍......
  • 基于Java+SSM+JSP医药在线药品销售商城系统(源码+LW+调试文档+讲解等)/医药在线/药品
    博主介绍......
  • 使用js写一个方法生成0000-9999一万个数字(4位数)
    functiongenerateFourDigitNumbers(){constnumbers=[];for(leti=0;i<=9999;i++){//UsepadStarttoensureeachnumberis4digitslongconstnumberString=i.toString().padStart(4,'0');numbers.push(numberString);......
  • JS进阶DAY3|事件(二)事件流
    目录一、事件流说明1.1事件流概念1.2事件捕获阶段1.3事件冒泡阶段二、事件传播的两个阶段说明2.1事件捕获2.2事件冒泡3.3示例代码三、阻止冒泡四、事件解绑4.1removeEventListener方法4.2使用DOM0级事件属性4.3使用一次性事件监听器一、事件流说明......