分享一个js日期时间格式化方法

149 阅读1分钟

参考项目中的日期时间格式化方法,根据自己的开发经验进行改造.
小弟献丑,不足之处还请各位大佬指点.

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");
    }
}