用 moment 实现获取本周、前 n 周、后 n 周开始结束日期
本文用
moment.js
实现了获取本周、前 n 周、后 n 周开始结束日期,即周一、周日日期的方法。
先看代码,封装了个工具类
DateTimeUtils.js
,可以直接复制到项目中使用
/**
* 时间日期工具类
import moment from 'moment'
export default {
获取本周周一和周日日期
getCurrentWeek() {
const start = moment().weekday(1).format('YYYY-MM-DD'); //本周一
const end = moment().weekday(7).format('YYYY-MM-DD'); //本周日
return [start, end]
获取前 i 周的周一和周日日期,并以数组的方式返回。
当 i=1,获取的是上周一和上周日的日期;
当 i=2,获取的是上上周一和上上周日的日期
...以此类推
@param i
getLastWeek(i) {
let weekOfDay = parseInt(moment().format('E'));//计算今天是这周第几天
let last_monday = moment().subtract(weekOfDay + 7 * i - 1, 'days').format('YYYY-MM-DD');//周一日期
let last_sunday = moment().subtract(weekOfDay + 7 * (i - 1), 'days').format('YYYY-MM-DD');//周日日期
return [last_monday, last_sunday]
获取后 i 周的周一和周日日期,并以数组的方式返回。
当 i=1,获取的是下周一和下周日的日期;
当 i=2,获取的是下下周一和下下周日的日期
...以此类推
@param i
getNextWeek(i) {
let weekOfDay = parseInt(moment().format('E'));//计算今天是这周第几天
let next_monday = moment().add((7 - weekOfDay) + 7 * (i - 1) + 1, 'days').format('YYYY-MM-DD');//周一日期
let next_sunday = moment().add((7 - weekOfDay) + 7 * i, 'days').format('YYYY-MM-DD');//周日日期
return [next_monday, next_sunday]
}
举几个例子来说明使用方法
let currentWeek1 = DateTimeUtils.getCurrentWeek() //获取本周开始结束日期
let currentWeek2 = DateTimeUtils.getLastWeek(0) //获取本周开始结束日期
let currentWeek3 = DateTimeUtils.getNextWeek(0) //获取本周开始结束日期
let lastWeek1 = DateTimeUtils.getLastWeek(1) //获取上周开始结束日期