JavaScript 之 获取当前日期的周日期范围、月日期范围

前言

  实际开发中,有的时候产品要求需要用到日期筛选,日期筛选又需要用的当前日期的周日期范围,也有可能上一周,下一周这样的,相对应的也就又可能是当前日期的月日期范围,上一个月、下一个月的这样的:
在这里插入图片描述
那么,代码是如何实现的呢?

代码封装

  • unil.js
/*** 获取本周日期范围*/
export const getCurrWeekDate = (num = 0) => {// 创建一个新的 Date 对象let d = new Date();let date = d.getDate()let week = d.getDay()let firstDay = date - (week - 1) + num * 7d.setDate(firstDay)let year1 = d.getFullYear()let m1 = d.getMonth() + 1let month1 = m1 > 9 ? m1 : '0' + m1let date1 = d.getDate() > 9 ? d.getDate() : '0' + d.getDate()let firstDate = `${year1}${month1}${date1}`let lastDay = date + (7 - week) + num * 7let d2 = new Date()d2.setDate(lastDay)let year2 = d2.getFullYear()let m2 = d2.getMonth() + 1let month2 = m2 > 9 ? m2 : '0' + m2let date2 = d2.getDate() > 9 ? d2.getDate() : '0' + d2.getDate()let lastDate = `${year2}${month2}${date2}`return `${firstDate}~${lastDate}`
}
/*** 获取本月日期范围*/
export const getCurrMonthDate = (num = 0) => {// 创建一个新的 Date 对象let date = new Date();let month = date.getMonth() + 1 + numdate.setMonth(month - 1)let year = date.getFullYear()let mm = date.getMonth() + 1let m = mm > 9 ? mm : '0' + mm// 设置为每月第一天date.setMonth(0); // 注意这里的参数是从0开始计算的,所以要将月份-1// 获取本月最后一天的日期let lastDay = new Date(year, m, 0).getDate();let lastDayOfMonth = lastDay > 9 ? lastDay : '0' + lastDayreturn `${year}${m}月01日~${year}${m}${lastDayOfMonth}`
}

方法中的参数num代表的是上一周还是上两周或者是下一周、下两周。

往上就是传负数,往下就是传正数;如上一周,传-1,下一周,传1,以此类推。

调用示例

这里直接基于ui设计以及代码复用将方法写一个通用方法调用:

以下调用环境是在vue2的环境中调用示例的,其他环境注意切换写法。

// 封装一个复用方法
getCurrDateText(type, num = 0) {let d = new Date()switch (type) {case '1': // 日let newDate = d.getDate() + numd.setDate(newDate)let M = d.getMonth() + 1let mm = M > 9 ? M : '0' + Mlet year = d.getFullYear()let dd = d.getDate() > 9 ? d.getDate() : '0' + d.getDate()this.currDate = `${year}${mm}${dd}`breakcase '2': // 周this.currDate = getCurrWeekDate(num)breakcase '3': // 月this.currDate = getCurrMonthDate(num)breakcase '4': // 季度let month = d.getMonth() + 1let m = month + num * 3d.setMonth(m)let newMonth = d.getMonth()let y = d.getFullYear()if (newMonth <= 3) {this.currDate = `${y}年01月~${y}年03月`} else if (newMonth <= 6) {this.currDate = `${y}年04月~${y}年06月`} else if (newMonth <= 9) {this.currDate = `${y}年07月~${y}年09月`} else {this.currDate = `${y}年10月~${y}年12月`}breakdefault:break}
},
  • 点击上一天/上一周/上一个月/上一季度
// this.currTab 初始值为0
getLastDates() {let type = (this.currTab + 1).toString()this.dateNum--this.getCurrDateText(type, this.dateNum)// reload data...
}
  • 点击下一天/下一周/下一个月/下一季度
getNextDates() {let type = (this.currTab + 1).toString()this.dateNum++this.getCurrDateText(type, this.dateNum)// reload data...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完全二叉树的节点个数

题目链接 完全二叉树的节点个数 题目描述 注意点 题目数据保证输入的树是完全二叉树 解答思路 最初想到的是递归计算子树对应的节点数量&#xff0c;相加就是整个二叉树的节点个数&#xff0c;但是该方法没有用到完全二叉树的特点&#xff0c;考虑是否有更加巧妙地方法根据…

五步炼丹!qwen通义千问1.5版本微调实战来了!

炼丹第一步&#xff08;数据准备&#xff09; 数据样例 我们需要至少两个json文件放在data目录&#xff0c;一个命名为dataset_info.json&#xff08;注意&#xff1a;这个文件是固定的名称&#xff0c;不要更改&#xff09;&#xff0c;还有一个是微调训练数据json文件名可以…

Day40-45 网络高级(modbus)

文章目录 Modbus起源1.起源&#xff1a;2.分类&#xff1a;3.优势&#xff1a;4.应用场景&#xff1a;5.ModbusTCP特点&#xff1a; Modbus TCP协议格式1.报文头2.寄存器3.功能码 工具软件使用.Modbus Slave&Poll2.网络调试助手.Wireshark的使用 Modbus RTU1、与Modbus TCP…

AIGC笔记--关节点6D位姿按比例融合

1--核心代码 6D位姿一般指平移向量和旋转向量&#xff0c;Maya软件中关节点的6D位姿指的是相对平移向量和欧拉旋转向量&#xff1b; 为了按比例融合两个Pose&#xff0c;首先需要将欧拉旋转向量转换为旋转矩阵&#xff0c;在将旋转矩阵转换为四元数&#xff0c;利用球面线性插值…

【JS逆向学习】猿人学第六题 js混淆 回溯

逆向目标 网址&#xff1a;https://match.yuanrenxue.cn/match/6接口&#xff1a;https://match.yuanrenxue.cn/api/match/6参数&#xff1a;payload(m、q) 逆向过程 老规矩&#xff0c;先来分析网络请求&#xff0c;加密的地方一目了然&#xff0c;没什么可多说的&#xff…

解决ubuntu 22.04新内核6.5.0-15无法编译NVIDIA显卡驱动

这里的新内核应该包括6.5.*系列的 文章目录 遇到的问题&#xff1a; 遇到的问题&#xff1a; 今天我在安装NVIDIA显卡驱动发现了一个问题&#xff0c;主要日志如下所示&#xff1a; make[3]: *** [scripts/Makefile.build:251: /tmp/selfgz1310041/NVIDIA-Linux-x86_64-550.5…

明牌了,这批组态界面算不算颜值担当?

一般来说工业组态图都不会过于追求颜值&#xff0c;好用、易用即可&#xff0c;但是在这个基础上再有颜值&#xff0c;试问谁又会拒绝呢&#xff1f; 哪一个单身狗&#xff0c;不喜欢能力强&#xff0c;有颜值的美女搭档呢&#xff0c;对不。

QT 如何在QPushButton上播放gif(终极版)

在平时浏览网站&#xff0c;或者使用软件的时候&#xff0c;经常可以见到&#xff1a;在点击了某个按钮之后&#xff0c;按钮上会显示动图以及提示文字。在QT中&#xff0c;比较常见且简单的做法就是&#xff1a;给按钮设置一个layout&#xff0c;然后在这个layout里面添加QLab…

瑞芯微ITX-3588J开发板烧录ubuntu桌面系统(图文详解)

首先进入FIrefly官网&#xff0c;这里不仅可以获得它的开发板信息教程&#xff0c;还可以获取到它的升级固件以及工具。 1、首先打开DriverInstall.exe&#xff0c;点击【驱动安装】。 2、点击【安装】&#xff0c;就会进行安装。 3、安装完成后就可以用Type-C数据线连接开发板…

Git的介绍

导出项目依赖 # 以后项目给别人需要导出项目依赖&#xff0c;放在项目路径下&#xff0c;以后在运行项目前&#xff0c;先安装依赖 一般约定俗成都叫 requirements.txt,但是会有别的&#xff1a;req.txt | dev.txt # 两种方式&#xff1a; 1、虚拟环境所有装的第三方&…

YoloV8改进策略:下采样改进|HWD改进下采样

摘要 本文使用HWD改进下采样&#xff0c;在YoloV8的测试中实现涨点。 论文解读 在卷积神经网络&#xff08;CNNs&#xff09;中&#xff0c;极大池化或跨行卷积等下采样操作被广泛用于聚合局部特征、扩大感受野和最小化计算开销。然而&#xff0c;对于语义分割任务&#xff…

关于原型的一些总结

猛然发现太久没去复习了&#xff0c;于是复习了一些知识&#xff0c;顺便冒个泡。本次主要总结的知识点关于原型&#xff0c;再文章后半部分有原型相关的题&#xff0c;感兴趣的可直接观看。 一、原型 1.什么是原型 简单理解&#xff0c;原型就是一个对象&#xff0c;通过原…