/**
* 将任意格式的日期转为 new Date() 类型
* @param {*} date 日期
* @param {boolean} allowNull 转换结果是否允许为null
* @returns
*/
function convertAnyToDate(date, allowNull = false) {
let dateType = Object.prototype.toString.call(date); // 传入的时间的类型
let timeObj = null; // 时间对象
// 获取时间对象
if (dateType == "[object Date]") {
timeObj = new Date(date);
} else if (dateType == "[object String]") {
// 判断是否为纯数字,纯数字即视为时间戳
let test = /^\d+$/.test(date);
if (test) {
let tempDate = parseInt(date);
let tempTimeStamp = date.length == 10 ? tempDate * 1000 : tempDate;
timeObj = new Date(tempTimeStamp);
} else {
// 利用是否能转换为时间戳判断是否为日期格式字符串
let tempTime = new Date(date).getTime();
if (null != tempTime && undefined != tempTime && !isNaN(tempTime)) {
timeObj = new Date(tempTime);
}
}
} else if (dateType == "[object Number]") {
let timestamp = date.toString().length == 10 ? date * 1000 : date;
timeObj = new Date(timestamp);
}
if (timeObj == null && !allowNull) {
timeObj = new Date();
}
return timeObj;
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。