参考项目中的日期时间格式化方法,根据自己的开发经验进行改造.
小弟献丑,不足之处还请各位大佬指点.
function dateFormate(datestamp, format) {
/**
* 设置默认值
*/
format = format || "yyyy-MM-dd hh:mm:ss";
datestamp = datestamp || new Date().valueOf();
/**
* 避免后端返回10位时间戳(数字),导致时间解析为1970-01-01
*/
if (typeof datestamp === 'number') {
if (datestamp.toString().length === 10) {
datestamp = datestamp * 1000;
}
}
/**
* 1. 处理ios格式兼容问题
* 2. 处理"-"为分隔符下的日期,时间默认返回为08:00:00;
*/
if (typeof datestamp === 'string') {
const reg = /-/g;
if(reg.test(datestamp)) datestamp = datestamp.replace(reg,"/");
}
format = format || "yyyy-MM-dd hh:mm:ss";
let date = new Date(datestamp);
if (date.toString() !== "Invalid Date") {
let obj = {
"y+": date.getFullYear(),
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"h+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds()
}
// 格式化日期时间
for (let key in obj) {
let reg = new RegExp(key);
if (reg.test(format)) {
format = format.replace(reg, obj[key].toString().length === 1 ? `0${obj[key]}` : obj[key]);
}
}
// 格式化星期
let weekReg = new RegExp("w+"),
weeks = ["日", "一", "二", "三", "四", "五", "六"];
if (weekReg.test(format)) {
format = format.replace(weekReg, weeks[date.getDay()]);
}
return format;
} else {
throw new Error("Invalid Date");
}
}