利用 js 的 Date 对象,获得三个时间戳,分别为当前时间、开始时间、结束时间,通过比对当前时间是否在开始时间和结束时间之间,来判断是否在一个时间区间内
方法一:
function isTimeInRange(startTime:any, endTime:any) {
// 获取当前时间、开始时间、结束时间的时间戳
const now = new Date();
const currentTime = now.getTime();
const start = new Date();
const end = new Date();
start.setHours(startTime.substring(0, 2), startTime.substring(3, 5), 0);
end.setHours(endTime.substring(0, 2), endTime.substring(3, 5), 0);
const startTimeMillis = start.getTime();
const endTimeMillis = end.getTime();
return currentTime >= startTimeMillis && currentTime <= endTimeMillis;
}
// 调用方法 当前时间是否在8:00-24:00之间
isTimeInRange('08:00','24:00')
方法二:
// 判断当前时间是否在指定时间段内
let checkAuditTime = (startTime, endTime) => {
// 获取当前时间
const date = new Date()
// 获取当前时间的年月日
const dataStr = `${date.getFullYear()}-${
date.getMonth() + 1
}-${date.getDate()} `
// 获取开始时间、结束时间、现在时间的时间戳
let startDate = new Date(dataStr + startTime).getTime()
let endDate = new Date(dataStr + endTime).getTime()
let nowDate = date.getTime()
const s = startDate > endDate // 判断开始时间否大于结束时间
if (s) [startDate, endDate] = [endDate, startDate] // 若开始时间否大于结束时间则交换值
// 判断现在的时间是否在开始时间和结束时间之间,若s为true则结果取反
if (nowDate > startDate && nowDate < endDate) {
return s ? false : true
} else {
return s ? true : false
}
}
// 使用
console.log(checkAuditTime('23:50', '00:10'))
二、js判断当前日期是否指定日期之后
同样是通过转换为时间戳进行判断
function judge(data:string) {
let compareData = new Date().getTime();
let referenceData = new Date(data).getTime();
let power = compareData>=referenceData ? 'true' : 'false';
return power
}
// console.log(judge('2023.1.1')) //true就是在2023.1.1之后,false就是在之前
上面方法也可以构造成传递两个参数,这样就可以判断某个日期是否在指定日期之后
function judge(one,data) {
let compareData = new Date(one).getTime();
let referenceData = new Date(data).getTime();
let power = compareData>=referenceData ? 'true' : 'false';
return power
}
// console.log(judge('2022.1.4','2023.1.1'))
// true就是在2023.1.1之后,false就是在之前