深拷贝and时间格式处理

73 阅读1分钟
export const deepCopy = (obj) => {
    if (typeof obj === 'object' && obj !== null) {
        var result = Array.isArray(obj) ? [] : {};
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (typeof obj[key] === 'object') {
                    result[key] = deepCopy(obj[key]);   //递归复制
                } else {
                    result[key] = obj[key];
                }
            }
        }
    } else {
        result = obj
    }
	return result;
  }


export function parseTime(date, formatStr) {
    if (!date) {
        return ''
    }
    let d
    date = date || new Date()
    if (date instanceof Date) {
        // 传入Date对象
        d = date
    } else if (typeof date === 'string') {
        // 日期格式
        date = date.replace(/(\d{4})(\d{1,2})(\d{1,2})/, (a, b, c, d) => { return `${b}-${c}-${d}` })
        d = new Date(switchConnectSign(date, 0))
    } else if (typeof date === 'number') {
        // 时间戳
        d = new Date(date)
    }
    if (!formatStr) {
        // 未传入格式
        formatStr = 'Y-M-D H:F:S'
        // 未传入格式
        // formatStr = 'Y-M-D H:F:S';
    }
    const formatNumStr = num => (num < 10 ? '0' + num : num)
    return formatStr.replace(/Y|y|M|m|D|d|H|h|F|f|S|s/g, v => {
        switch (v) {
            case 'y':
                // yyyy => yy
                return (d.getFullYear() + '').slice(2)
            case 'Y':
                // yyyy
                return d.getFullYear()
            case 'm':
                // m
                return d.getMonth() + 1
            case 'M':
                // mm
                return formatNumStr(d.getMonth() + 1)
            case 'd':
                // d
                return d.getDate()
            case 'D':
                // dd
                return formatNumStr(d.getDate())
            case 'h':
                // h
                return d.getHours()
            case 'H':
                // hh
                return formatNumStr(d.getHours())
            case 'f':
                // f
                return d.getMinutes()
            case 'F':
                // ff
                return formatNumStr(d.getMinutes())
            case 's':
                // s
                return d.getSeconds()
            case 'S':
                // ss
                return formatNumStr(d.getSeconds())
        }
    })
}