JavaScript 格式化时间
function formatDate(date) { /** * 格式化日期 * @param {Date|String} date 日期或日期字符串 */ function _isString(val) { return Object.prototype.toString.call(val) === '[object String]'; } /** * 精确判断数据是否是 Date 类型 * @param {Any} val 要判断的数据 * @returns {Boolean} true:是;false:不是; */ function _isDate(val) { return Object.prototype.toString.call(val) === '[object Date]'; } let YYYY = null; let M = null; let MM = null; let D = null; let DD = null; let h = null; let hh = null; let m = null; let mm = null; let s = null; let ss = null; let ms = null; let ms2 = null; let ms3 = null; let ms4 = null; let dt = null; // 如果 date 是 String 类型 if (date && _isString(date)) { // 真机运行时,如果直接用 new Date('YYYY-MM-DD hh:mm:ss') 会报 Invalid Date 错误,所以采用下面的方式创建日期 let dtArr = date .replace(/\//g, '.') .replace(/-/g, '.') .replace(/:/g, '.') .replace(/T/g, ' ') .replace(' ', '.') .replace('Z', '') .split('.'); let year = 2020; let month = 12; let day = 18; let hour = 0; let minute = 0; let second = 0; let millisecond = 0; // 年 if (dtArr.length > 0 && !isNaN(dtArr[0])) { year = parseInt(dtArr[0]); } // 月 if (dtArr.length > 1 && !isNaN(dtArr[1])) { month = parseInt(dtArr[1]); } // 日 if (dtArr.length > 2 && !isNaN(dtArr[2])) { day = parseInt(dtArr[2]); } // 时 if (dtArr.length > 3 && !isNaN(dtArr[3])) { hour = parseInt(dtArr[3]); } // 分 if (dtArr.length > 4 && !isNaN(dtArr[4])) { minute = parseInt(dtArr[4]); } // 秒 if (dtArr.length > 5 && !isNaN(dtArr[5])) { second = parseInt(dtArr[5]); } // 毫秒 if (dtArr.length > 6 && !isNaN(dtArr[6])) { millisecond = parseInt(dtArr[6]); } date = new Date(year, month - 1, day, hour, minute, second, millisecond); } // 如果 date 是 Date 类型 if (date && _isDate(date)) { YYYY = date.getFullYear(); M = date.getMonth() + 1; MM = M >= 10 ? M : '0' + M; D = date.getDate(); DD = D >= 10 ? D : '0' + D; h = date.getHours(); hh = h >= 10 ? h : '0' + h; m = date.getMinutes(); mm = m >= 10 ? m : '0' + m; s = date.getSeconds(); ss = s >= 10 ? s : '0' + s; ms = date.getMilliseconds(); ms2 = ms; ms3 = ms; ms4 = ms; if (ms < 10) { ms2 = '0' + ms; ms3 = '00' + ms; ms4 = '000' + ms; } else if (ms < 100) { ms3 = '0' + ms; ms4 = '00' + ms; } else { ms4 = '0' + ms; } } // 返回的数据对象 let result = { YYYY: YYYY, MM: MM, M: M, DD: DD, D: D, hh: hh, h: h, mm: mm, m: m, ss: ss, s: s, ms: ms, ms2: ms2, ms3: ms3, ms4: ms4, dt: date, f0: `${YYYY}.${MM}.${DD}`, f1: `${YYYY}-${MM}-${DD}`, f2: `${YYYY}年${M}月${D}日`, f3: `${YYYY}-${M}-${D} ${hh}:${mm}`, f4: `${h}:${m}:${s}`, f5: `${MM}-${DD}`, f6: `${YYYY}-${MM}`, f7: `${YYYY}年${M}月`, f8: `${h}:${m}`, f9: `${M}月${D}日`, ff: `${YYYY}-${M}-${D} ${hh}:${mm}:${ms2}`, notes: 'YYYY(年),MM(月,补0),M(月,不补0),DD(日,补0),D(日,不补0),hh(时,补0),h(时,不补0),mm(分,补0),m(分,不补0),ss(秒,补0),s(秒,不补0),ms(毫秒,不补0),ms2(毫秒,补0到2位),ms3(毫秒,补0到3位),ms4(毫秒,补0到4位),其余的f1,f2,... 看格式就知道了!', }; return result; }