1、获取包括今天之内的后七天
const dateAfterDays = (num = 7, format = 'MM-DD') => {
let days = []
for (let i = 0; i< num; i++) {
const day = moment().add(i, 'days').format(format)
days.push(day)
}
return days
}
// 例如今天是11.17那返回的结果就是
// ['11.17', '11.18', '11.19', '11.20', '11.21', '11.22', '11.23']
// 如果你想从明天开始的后七天,那么 moment().add()第一个参数就从1开始,以此类推
2、获取包括今天之内的后七天对应的星期
注意:moment返回的星期只是对应的数值,例如周日是0,周一是1,。。。周六是6,这里需要我们自己转一下
const WEEK_ENUM = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
const dataAfterWeek = (num = 7) => {
let weeks = []
const days = this.dateAfterDays(num, 'YYYY-MM-DD')
for (let i = 0; i< days.length; i++) {
const week = moment(days[i]).day()
weeks.push(WEEK_ENUM[week])
}
return weeks
}
// 例如今儿是周四,那么返回的结果就是
// ['周四', '周五', '周六', '周日', '周一', '周二', '周三']
3、判断一个时间在不在某个时间范围内
我这的一个需求场景:
例如今天是2022-11-17
* 如果是今日早上8点之前,则为2022-11-16 20:00:00
* 早上8点到晚上8点之间,则为2022-11-17 08:00:00
* 如果是晚上8点之后,则为2022-11-17 20:00:00
const compareTime = () => {
let resultTime = ''
// 当前日期
let date = moment().format('YYYY-MM-DD')
// 当前日期的前一天
let beforeDate = moment().subtract(1, 'days').format('YYYY-MM-DD')
/*
* 判断时间范围
*/
// 格式化当前时间
let datetime = moment().format('YYYY-MM-DD HH:mm:ss')
// 如果当前日期在当天的0点至早上8点
let beforeFlag = moment(datetime).isBetween(`${date} 00:00:00`, `${date} 08:00:00`, null, '[]')
if (beforeFlag) {
resultTime = `${beforeDate} 20:00:00`
}
// 如果当前时间在早上8点到20点之间 () 表示既不包含前一个时间,也不包含后一个时间,这里表示当日早上八点到晚上8点 开区间
let currentFlag = moment(datetime).isBetween(`${date} 08:00:00`, `${date} 20:00:00`, null, '()')
if (currentFlag) {
resultTime = `${date} 08:00:00`
}
// 如果当前时间在20点之后 [] 表示包含前后两个时间,包含当日晚上8点到晚上24点 闭区间
let afterFlag = moment(datetime).isBetween(`${date} 20:00:00`, `${date} 23:59:59`, null, '[]')
if (afterFlag) {
resultTime = `${date} 20:00:00`
}
return resultTime
},
注:moment的isBetween方法的第四个参数,是’()‘、’(]‘、’[)‘、’[]’ 区间是开是闭,视自己的需求情况而定。