您的位置:首页 > 新闻 > 会展 > 日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)

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

2025/10/17 14:37:35 来源:https://blog.csdn.net/m0_51181022/article/details/139856160  浏览:    关键词:日期工具类:获取 当前周 | 上一周 | 下一周 的第一天(周一)和最后一天(周天)

问题背景

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

例如:

输入: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"}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com