pc端new Date("2020-02-02 10:00:00")正常,移动端出现Invalid Date。
翻了下MDN ,发现这句话
之前偷懒直接全用了字符串构造。改函数吧QAQ
改前:
改后:
(格式判断暂无,日期写死在前端里了)
/**
* @description:日期区域判断
* @param {*} str
* @return {*}
*/
export function checkDateBetween(checkArr,checkTime=null,separate="-") {
if (checkArr.length != 2) {
return false;
}
const startArr = checkArr[0].split(separate)
const endArr = checkArr[1].split(separate)
const start = getDateByParams(...startArr).getTime();
const end = getDateByParams(...endArr).getTime();
const check = checkTime ? getDateByParams(...checkTime.split(separate)).getTime() : new Date().getTime();
if (check >= start && check <= end) {
return true;
}
return false;
}
/**
* @description: 时间区域判断
* @param {*} checkArr
* @return {*}
*/
export function checkDateTimeBetween(checkArr, checkTime = null) {
if (checkArr.length != 2) {
return false;
}
const startArr = splitDateTime(checkArr[0]);
const endArr = splitDateTime(checkArr[1]);
const start = getDateByParams(...startArr).getTime();
const end = getDateByParams(...endArr).getTime();
const now = checkTime ? getDateByParams(...splitDateTime(checkTime)).getTime() : new Date().getTime();
if (now >= start && now <= end) {
return true;
}
return false;
}
/**
* @description: 拆分日期时间 2021-06-25 10:00:00
* @param {*} dateTime
* @return {*}
*/
export function splitDateTime(dateTime, defaultTime = "00:00:00") {
const arr = dateTime.split(" ");
const resArr = [];
console.log(arr)
if (arr.length == 0) {
return ["1970", "1", "1", "00", "00", "00"];
}
const dateArr = arr[0].split("-");
const timeArr = arr.length == 2 ? arr[1].split(":") : defaultTime.split(":");
resArr.push(...dateArr, ...timeArr);
console.log(resArr)
return resArr;
}
/**
* @description: 构造时间 通过年月参数
* @param {*} year
* @param {*} month
* @param {*} date
* @param {*} hours
* @param {*} minutes
* @param {*} seconds
* @param {*} milliseconds
* @return {*}
*/
export function getDateByParams(year, month="1", date = "1", hours = "0", minutes = "0", seconds = "0", milliseconds = "0") {
const monthIndex = Number(month) - 1;
return new Date(Number(year), monthIndex, Number(date), Number(hours), Number(minutes), Number(seconds), Number(milliseconds));
}