当前位置: 首页 > news >正文

日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)

问题背景

获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)。

例如:

输入:2024-6-21, 'current'
输出:{"firstDay": "2024-6-17","lastDay": "2024-6-23"}输入:2024-6-21, 'last'
输出:{"firstDay": "2024-6-10","lastDay": "2024-6-16"}输入:2024-6-21, 'next'
输出:{"firstDay": "2024-6-24","lastDay": "2024-6-30"}

代码实现

/*** @description 获取当前周 | 上一周 | 下一周 的第一天和最后一天* @author Joyce Lee* @date 2024-6-19* @param today* @param status* @returns {{firstDay: Date, lastDay: Date}}*/
export const getFirstAndLastDayOfCurrentWeek = (today = new Date(), status = 'current') => {today = new Date(today);const currentDay = today.getDay(); // 0(星期日)到 6(星期六)// 获取本周第一天(星期一)const firstDay = new Date(today);// 获取本周最后一天(星期日)const lastDay = new Date(today);switch (status) {case 'current':firstDay.setDate(today.getDate() - currentDay + 1);lastDay.setDate(today.getDate() + (6 - currentDay + 1));break;case 'last':firstDay.setDate(today.getDate() - (currentDay === 0 ? 6 : currentDay - 1) - 7)lastDay.setDate(today.getDate() - currentDay)break;case 'next':firstDay.setDate(today.getDate() + (8 - currentDay))lastDay.setDate(today.getDate() + (14 - currentDay))}return {firstDay: firstDay,lastDay: lastDay};
}

测试

console.log(getFirstAndLastDayOfCurrentWeek())  
// {"firstDay": "2024-6-17","lastDay": "2024-6-23"}
console.log(getFirstAndLastDayOfCurrentWeek('2024-6-21', 'last'))
// {"firstDay": "2024-6-10","lastDay": "2024-6-16"}
console.log(getFirstAndLastDayOfCurrentWeek('2024-6-21', 'next'))
// {"firstDay": "2024-6-24","lastDay": "2024-6-30"}

相关文章:

  • sherpa-onnx说话人识别+语音识别自动开启(VAD)+语音识别Python API
  • Win11下安装VS2022失败的解决办法
  • Java编程小练习题目
  • 外包IT运维解决方案
  • CATO原理中的数学与魔术(十四)——流程设计思路与升华
  • 强化学习中的自我博弈(self-play)
  • 数据库精选题(三)(SQL语言精选题)(按语句类型分类)
  • 解决 uniapp h5 页面在私有企微iOS平台 间歇性调用uni api不成功问题(uni.previewImage为例)。
  • uniapp实现幻灯功能方法及代码
  • springboot 搭建一个 测试redis 集群连通性demo
  • Java热部署:让应用更新如丝般顺滑,告别繁琐重启!
  • openEuler2203SP3自定义ios
  • android怎么知道FileProvider应该导入的包名是什么?androidx.core.content.FileProvider
  • 华为开发者大会:全场景智能操作系统HarmonyOS NEXT
  • python web框架哪家强?Flask、Django、FastAPI对比
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  •  D - 粉碎叛乱F - 其他起义
  • exports和module.exports
  • express + mock 让前后台并行开发
  • git 常用命令
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Magento 1.x 中文订单打印乱码
  • markdown编辑器简评
  • Mysql5.6主从复制
  • npx命令介绍
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 从输入URL到页面加载发生了什么
  • 猴子数据域名防封接口降低小说被封的风险
  • 解析 Webpack中import、require、按需加载的执行过程
  • 力扣(LeetCode)22
  • 前嗅ForeSpider教程:创建模板
  • 强力优化Rancher k8s中国区的使用体验
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用parted解决大于2T的磁盘分区
  • 手写双向链表LinkedList的几个常用功能
  • 怎样选择前端框架
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​secrets --- 生成管理密码的安全随机数​
  • # 透过事物看本质的能力怎么培养?
  • ${factoryList }后面有空格不影响
  • $nextTick的使用场景介绍
  • (13):Silverlight 2 数据与通信之WebRequest
  • (6)添加vue-cookie
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)Sql Server 保留几位小数的两种做法
  • (转)Sublime Text3配置Lua运行环境
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation