各种类型 时间形式 转为字符串
time:时间值
cFormat: {y}-{m}-{d} {h}:{i}:{s}
{y}-{m}-{d} {h}:{i}:{s} {a}
{y}/{m}/{d}
// Parse the time to string
const parseTime = (
time?: object | string | number | null,
cFormat?: string
): string | null => {
if (time === undefined || !time) {
return null;
}
const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
let date: Date;
if (typeof time === "object") {
date = time as Date;
} else {
if (typeof time === "string") {
if (/^[0-9]+$/.test(time)) {
// support "1548221490638"
time = parseInt(time);
} else {
// support safari
// https://stackoverflow.com/questions/4310953/invalid-date-in-safari
time = time.replace(new RegExp(/-/gm), "/");
}
}
if (typeof time === "number" && time.toString().length === 10) {
time = time * 1000;
}
date = new Date(time);
}
const formatObj: { [key: string]: number } = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
};
const timeStr = format.replace(/{([ymdhisa])+}/g, (result, key) => {
const value = formatObj[key];
// Note: getDay() returns 0 on Sunday
if (key === "a") {
console.log(value);
return `星期${["日", "一", "二", "三", "四", "五", "六"][value]}` ;
}
return value.toString().padStart(2, "0");
});
return timeStr;
};
调用方法,
parseTime(new Date());
// console :2020-11-30 10:36:24
parseTime('2020-12-2');
// console :2020-12-02 00:00:00
parseTime(1604938866479);
// console :2020-11-10 00:21:06
parseTime("1604938866479");
// console :2020-11-10 00:21:06
parseTime("1604938866479","{y}-{m}-{d} {h}:{i}:{s}{a}");
// console : 2020-11-10 00:21:06 星期二
parseTime("1604938866479","{m}/{d}/{y}");
// console : 12/02/2020
parseTime(1);
// console :1970-01-01 08:00:00
parseTime(null);
// console :null
parseTime("");
// console :null
parseTime(undefined);
// console :null