JS - 自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围
自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围
- 一. 方法使用
- 二. 实现案例
一. 方法使用
根据月开始日期星期几、月结束日期星期几,计算始周、末周占月的天数(每周周期段:上周六 —— 本周五)
getStrEndDay(str_week, end_week) {// 始周占月的天数:开始周几(str_week) 距离 结束(周五) 有几天let str_num = 0;switch (str_week) {case 1:str_num = 5;break;case 2:str_num = 4;break;case 3:str_num = 3;break;case 4:str_num = 2;break;case 5:str_num = 1;break;case 6:str_num = 7;break;case 7:str_num = 6;break;}// 末周占月的天数:开始(周六) 距离 结束周几(end_week) 有几天let end_num = 0;switch (end_week) {case 1:end_num = 3;break;case 2:end_num = 4;break;case 3:end_num = 5;break;case 4:end_num = 6;break;case 5:end_num = 7;break;case 6:end_num = 1;break;case 0:end_num = 2;break;}return { str_num, end_num };
}
根据年月,获取每月有几周
getWeekCount(year, month) {// 获取天数var day_num = new Date(year, month, 0).getDate();// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();// 该月减去第一周、最后一周的天数const numRes = this.getStrEndDay(str_week, end_week);const oth_day = day_num - numRes.end_num - numRes.str_num;// 总周数let week_num = oth_day / 7;if (numRes.str_num == 7) {week_num += 1;}if (numRes.end_num != 0) {week_num += 1;}return week_num;
}
根据年月日获取当前周
getCurWeek(year, month, day) {// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();// 该月减去第一周的天数const numRes = this.getStrEndDay(str_week, end_week);const oth_day = day - numRes.str_num;// 第几周let cur_week = Math.ceil(oth_day / 7);if (numRes.str_num == 7) {cur_week += 1;}return cur_week;
}
根据年、月、周获取周的日期
getWeekTime(year, month, week) {// 获取天数var day_num = new Date(year, month, 0).getDate();// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();const numRes = this.getStrEndDay(str_week, end_week);// 该周开始、结束日期let str_time = (week - 1) * 7 + 1;let end_time = week * 7;if (numRes.str_num != 7) {str_time += numRes.str_num;end_time += numRes.str_num;}let mm = Number(month);mm = mm < 10 ? "0" + mm : mm;str_time = str_time < 10 ? "0" + str_time : str_time;end_time = end_time < 10 ? "0" + end_time : end_time;let strDate = year + "-" + mm + "-" + str_time;let endDate = year + "-" + mm + "-" + end_time;if (Number(end_time) > day_num) {let mm1 = Number(mm) + 1 < 10 ? "0" + (Number(mm) + 1) : Number(mm) + 1;let last_num = Number(end_time) - day_num;last_num = last_num < 10 ? "0" + last_num : last_num;endDate = year + "-" + mm1 + "-" + last_num;}return {strDate,endDate};
}
二. 实现案例
<template><div>Home</div>
</template><script>
export default {data() {return {};},mounted() {// 自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围const date = new Date(); //需要计算的日期const yy = date.getFullYear();const mm = (date.getMonth() + 1 + "").padStart(2, "0");const dd = (date.getDate() + "").padStart(2, "0");console.log(`计算日期:${yy}年${mm}月${dd}日`);const week_count = this.getWeekCount(yy, mm);console.log(`${yy}年${mm}月总共${week_count}周`);const week_cur = this.getCurWeek(yy, mm, dd);console.log(`${yy}年${mm}月${dd}日属于本月第${week_cur}周`);const days = this.getWeekTime(yy, mm, week_cur);console.log(`${yy}年${mm}月第${week_cur}周日期段为${days.strDate} —— ${days.endDate}`);},methods: {// 根据月开始日期星期几、月结束日期星期几,计算始周、末周占月的天数(每周周期段:上周六 —— 本周五)getStrEndDay(str_week, end_week) {// 始周占月的天数:开始周几(str_week) 距离 结束(周五) 有几天let str_num = 0;switch (str_week) {case 1:str_num = 5;break;case 2:str_num = 4;break;case 3:str_num = 3;break;case 4:str_num = 2;break;case 5:str_num = 1;break;case 6:str_num = 7;break;case 7:str_num = 6;break;}// 末周占月的天数:开始(周六) 距离 结束周几(end_week) 有几天let end_num = 0;switch (end_week) {case 1:end_num = 3;break;case 2:end_num = 4;break;case 3:end_num = 5;break;case 4:end_num = 6;break;case 5:end_num = 7;break;case 6:end_num = 1;break;case 0:end_num = 2;break;}return { str_num, end_num };},// 根据年月,获取每月有几周getWeekCount(year, month) {// 获取天数var day_num = new Date(year, month, 0).getDate();// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();// 该月减去第一周、最后一周的天数const numRes = this.getStrEndDay(str_week, end_week);const oth_day = day_num - numRes.end_num - numRes.str_num;// 总周数let week_num = oth_day / 7;if (numRes.str_num == 7) {week_num += 1;}if (numRes.end_num != 0) {week_num += 1;}return week_num;},// 根据年月日获取当前周getCurWeek(year, month, day) {// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();// 该月减去第一周的天数const numRes = this.getStrEndDay(str_week, end_week);const oth_day = day - numRes.str_num;// 第几周let cur_week = Math.ceil(oth_day / 7);if (numRes.str_num == 7) {cur_week += 1;}return cur_week;},// 根据年、月、周获取周的日期getWeekTime(year, month, week) {// 获取天数var day_num = new Date(year, month, 0).getDate();// 该月第一天、最后一天const str_day = new Date().setFullYear(year, month - 1, 1);const end_day = new Date().setFullYear(year, month, 0);//该月第一周、最后一周const str_week = new Date(str_day).getDay();const end_week = new Date(end_day).getDay();const numRes = this.getStrEndDay(str_week, end_week);// 该周开始、结束日期let str_time = (week - 1) * 7 + 1;let end_time = week * 7;if (numRes.str_num != 7) {str_time += numRes.str_num;end_time += numRes.str_num;}let mm = Number(month);mm = mm < 10 ? "0" + mm : mm;str_time = str_time < 10 ? "0" + str_time : str_time;end_time = end_time < 10 ? "0" + end_time : end_time;let strDate = year + "-" + mm + "-" + str_time;let endDate = year + "-" + mm + "-" + end_time;if (Number(end_time) > day_num) {let mm1 = Number(mm) + 1 < 10 ? "0" + (Number(mm) + 1) : Number(mm) + 1;let last_num = Number(end_time) - day_num;last_num = last_num < 10 ? "0" + last_num : last_num;endDate = year + "-" + mm1 + "-" + last_num;}return {strDate,endDate};}}
};
</script>
相关文章:
JS - 自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围
自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围一. 方法使用二. 实现案例一. 方法使用 根据月开始日期星期几、月结束日期星期几,计算始周、末周占月的天数(每周周期段:上周六 —— 本周五&#x…...
Linux :理解编译的四个阶段
目录一、了解编译二、认识编译的四个阶段(一)预处理(二)编译(三)汇编(四)链接1.静态链接2.动态链接三、分步编译(一)创建.c文件(二)预…...
197.Spark(四):Spark 案例实操,MVC方式代码编程
一、Spark 案例实操 1.数据准备 电商网站的用户行为数据,主要包含用户的 4 种行为:搜索,点击,下单,支付 样例类: 2. Top10 热门品类 先按照点击数排名,靠前的就排名高;如果点击数相同,再比较下单数;下单数再相同,就比较支付数。 我们有多种写法,越往后性能越…...
Vue 项目如何迁移小程序
最近我们看到有开发者在社群里提出新的疑惑「我手头已经有一个成熟的 HTML5 项目了,这种项目可以转为小程序在 FinClip 环境中运行吗?」。 经过工作人员的沟通了解,开发者其实是想将已有的 Vue 项目转为小程序,在集成了 FinClip …...
unit1-问候以及介绍
unit1-问候以及介绍 重点表达 1、问好 使用hello 和 hi 来打招呼。hello可以使用在正式和非正式的场合。hi是非正式的。但是hello 和 hi 都可以在一天的任何时段使用。 Hello. 你好。 Hi! 嗨! 介绍你的姓名 使用 I’m 和 My name is 告诉别人你的名字。 I’m Pau…...
杂记——19.git上传时出现the remote end hung up unexpectedly错误
git是大家常用的项目版本控制工具,熟练地使用git可以提高开发效率,但是有时在使用git推送代码时,会提示“the remote end hung up unexpectedly”的问题,那么git推送代码提示“the remote end hung up unexpectedly”怎么解决呢&a…...
python123平台题目
作业二 1. 2的n次方描述输入格式输出格式输入输出实例代码解析2. 输出最大值描述输入格式输出格式输入输出示例代码解析3. 字符串输出描述输入格式输出格式输入输出示例代码解析4. 字符串长度描述输入格式输出格式输入输出示例代码解析...
ROS学习笔记(六):TF坐标变换
ROS学习笔记(六):TF坐标变换TF的基本知识TF工具tf_monitortf_echostatic_transform_publisherview_frames创建TF广播器创建TF监听器TF的基本知识 TF是一个让用户随时间跟踪多个坐标系的功能包,它使用树形数据结构,根据…...
【python】为你绘制玫瑰一束,爱意永存
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 若是有真情,爱意如溪水, 若是有真爱,爱意如阳光, 若是两情相悦,又岂在朝朝暮暮, 女子淡淡的情愫,深深地想念, 浓浓的爱意&a…...
智能家居创意产品一Homkit智能通断器
智能通断器,也叫开关模块,可以非常方便地接入家中原有开关、插座、灯具、电器的线路中,通过手机App或者语音即可控制电路通断,轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及,越来越多的人想将自己的家改…...
【数据库】MySQL表的增删改查(基础命令详解)
写在前面 : 语法中大写字母是关键字,用[]括这的是可以省略的内容。文中截图是相对应命令执行完得到的结果截图。1.CRUD 注释:在SQL中可以使用“--空格描述”来表示注释说明.CRUD:即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首…...
2023年全国最新保安员精选真题及答案15
百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 151.该图所要表达的是()消防器材。 A:地上消防栓 B:灭火器 …...
KPN对任意形状文本检测
文章目录一、研究背景二、方法流程1. 特征提取2. 核建议3. 实例无关特征图4. 轮廓生成5. 其余部分内容三、不足一、研究背景 相比起基于 FCN 网络的文本边缘检测网络,KPN网络可以更好地处理文本之间的间隔。 二、方法流程 1. 特征提取 FCN 和 FPN FCN(全卷积神经…...
同城外卖跑腿系统源码分析
外卖订餐已经成为很多“社畜”日常不可分割的一部分,足不出户,只需要一部电子设备即可在线订餐,并且可提供的选择非常多样化,与传统的电话订餐外卖模式相比也更便捷的多。 因此,同城外卖跑腿系统源码得以爆火ÿ…...
SCL_PFENET跑通填坑
1.数据准备:VOC2012数据集,initmodel文件夹(预训练模型),SegmentationClassAug数据2.训练部分:训练部分没什么需要改动的,也就改一下选择的配置文件。在config文件夹里有关于coco和voc数据的配置…...
Redis 做延迟消息队列
背景 看到消息队列,我们肯定会想到各种MQ,比如:RabbitMQ,acivityMQ、RocketMQ、Kafka等。 但是,当我们需要使用消息中间件的时候,并非每次都需要非常专业的消息中间件,假如我们只有一个消息队…...
刚果金FERI证书模板
FERI办理流程介(一)申请资料1:FERI APPLICATION FORM申请表格;2:草本海运提单(DRAFT B/L COPY);三:已盖章的商业发飘和箱单扫描件 (Commercial Invoice&Packing list)…...
什么是蜕变测试?
文章目录1.传统测试2.蜕变测试2.1.蜕变测试的理解2.2.蜕变测试的步骤2.2.1.生成蜕变关系2.2.2.生成蜕变用例2.2.3.执行蜕变用例2.2.4.校验蜕变关系参考文献1.传统测试 在没有蜕变测试的时代,传统软件测试的原理是:给定输入,观察被测软件的输…...
74. ‘pip‘不是内部或外部命令,也不是可运行的程序-解决办法
74. pip’不是内部或外部命令,也不是可运行的程序-解决办法 文章目录74. pip不是内部或外部命令,也不是可运行的程序-解决办法1. 课题导入2. 手动配置环境变量1. 准备工作2. 配置步骤3. 命令行安装1. 课题导入 有的同学在使用pip安装第三方库时…...
MIL图像处理那些事:应用程序模块(Mapp)- 初始化和控制MIL应用程序的执行环境
提示:本系列文章通过示例详细介绍MIL图像处理的基础知识及相关操作,让给你快速学会使用MIL进行图像处理 文章目录 前言初始化Mil环境MappAllocMappAllocDefault计时MappTimer异常处理打开和关闭 Mil 异常提示C# try...catch回调函数MappHookFunction查询MappInquire文件操作Ma…...
Cisco Packet Tracer实战:3分钟搞定Web/DNS/DHCP服务器联调(附拓扑图)
Cisco Packet Tracer实战:Web/DNS/DHCP服务器高效联调指南 在当今网络技术快速发展的背景下,掌握基础网络服务的配置与联调已成为网络工程师的必备技能。Cisco Packet Tracer作为一款强大的网络仿真工具,为学习者提供了安全、便捷的实验环境&…...
别再死磕EKF了!用ESKF搞定无人机姿态估计,避开‘大数吃小数’的坑
无人机姿态估计实战:用ESKF避开EKF的数值陷阱 四轴飞行器在高速翻滚时,IMU数据突然出现剧烈抖动——这是去年调试自主无人机时遇到的真实场景。当时使用传统EKF算法,姿态解算在极端机动下频繁发散,直到切换到误差状态卡尔曼滤波&a…...
Phi-4-Reasoning-Vision实操手册:官方SYSTEM PROMPT精准适配教程
Phi-4-Reasoning-Vision实操手册:官方SYSTEM PROMPT精准适配教程 1. 工具概览 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡4090环境优化。这个工具严格遵循官方SYSTEM PROMPT规范ÿ…...
CLIP-GmP-ViT-L-14匹配精度实测:Softmax置信度排序效果惊艳案例集
CLIP-GmP-ViT-L-14匹配精度实测:Softmax置信度排序效果惊艳案例集 1. 引言:当图片遇见文字,CLIP如何精准“读懂”? 想象一下,你有一张照片,里面可能是一只猫、一辆车,或者一片风景。如果让你用…...
深入解析Bluetooth AVDTP协议:音频/视频传输的核心机制
1. 蓝牙AVDTP协议初探:音频视频传输的幕后英雄 每次用蓝牙耳机听音乐或看视频时,你可能没意识到背后有个"隐形交通警察"在指挥数据流动。这个默默工作的角色就是AVDTP协议(Audio/Video Distribution Transport Protocol)…...
OpenClaw浏览器自动化:Qwen3-32B-Chat智能爬虫实战
OpenClaw浏览器自动化:Qwen3-32B-Chat智能爬虫实战 1. 为什么选择OpenClaw做浏览器自动化? 去年我接手了一个市场调研项目,需要从200多个电商页面抓取商品信息和用户评价。传统爬虫遇到动态加载、反爬机制时频繁报错,手动操作又…...
施密特触发器除了整形还能干啥?聊聊它在Arduino按键消抖和信号调理里的妙用
施密特触发器在Arduino中的高阶应用:从按键消抖到信号调理的实战指南 当你在调试Arduino项目时,是否遇到过按键响应不稳定、传感器读数跳变的问题?这些看似简单的硬件问题,往往会让开发者花费大量时间在软件滤波上。实际上&#x…...
SkeyeVSS中SSE(Server-Sent Events)架构设计
本文说明 core/app/sev/vss 信令服务内 SSE 长连接 的实现方式:独立 HTTP 服务、/events 入口、按 type 路由到不同 Logic,以及 messageChan → 文本帧 → Flush 的推送模型。可与《SkeyeVSS中HTTP架构设计》《skeyeVSS中WebSocket架构设计》对照阅读。 …...
论文aigc检测率多少算正常?超标后怎么快速降AI率达标?
论文aigc检测率多少算正常?超标后怎么快速降AI率达标? “我的论文AIGC检测率38%,这算正常吗?” “室友的才12%,我的47%,是不是完蛋了?” “学校说不能超过30%,我现在31%,…...
木马与恶意软件深度实战:查杀原理 + 免杀对抗全攻略(2026 珍藏版)
木马与恶意软件深度实战:查杀原理 免杀对抗全攻略(2026 珍藏版) 在网络安全的攻防对抗中,木马(Trojan Horse) 是最经典、最具代表性的恶意软件之一。它以 “伪装欺骗” 为核心手段,以 “远程控…...
