使用说明:
/** * 日期格式化函数 * @param { Date | string | number } time 日期原数据 * @param { string } format 时间格式* @param { boolean } use12HourClock 是否使用12小时进制
* @return { string } */ 示例: let date = new Date(); let newDate = formatTime(date, 'yyyy-MM-dd-d\\\\HH:H*mm-ms');
yyyy | 年份 | HH | 小时 |
yy | 年份后两位 | H | 小时 |
MM | 月份 | mm | 分(个位带0) |
cM | 中文月份 | s | 秒 |
eM | 英文月份 | ss | 秒(个位带0) |
M | 月份(个位带0) | m | 分 |
dd | 日 | ms | 毫秒 |
d | 日(个位带0) | w | 星期 |
et | AM/ PM | ct | 上午/下午 |
1 function formatTime(time, format, use12HourClock) { 2 debugger 3 if (!time || !format) { 4 return ''; 5 } 6 // 判断传入time是否为时间对象, 非时间对象则将其转化 7 if (Object.prototype.toString.call(time) !== '[object Date]') { 8 time = new Date(time); 9 } 10 const map = {}; 11 map.i = !0; 12 map.r = /\byyyy|yy|MM|cM|eM|M|dd|d|HH|H|mm|ms|ss|m|s|w|ct|et\b/g; 13 14 const $12cc = ['上午', '下午']; 15 const $12ec = ['A.M.', 'P.M.']; 16 const week = ['日', '一', '二', '三', '四', '五', '六']; 17 const monthZh = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二']; 18 const monthEn = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; 19 20 map.yyyy = time.getFullYear(); 21 map.yy = (`${map.yyyy}`).substr(2); 22 23 map.M = time.getMonth() + 1; 24 map.MM = ((parseInt(map.M, 10) || 0) < 10 ? '0' : '') + parseInt(map.M, 10) || 0; 25 map.eM = monthEn[map.M - 1]; 26 map.cM = monthZh[map.M - 1]; 27 28 map.d = time.getDate(); 29 map.dd = ((parseInt(map.d, 10) || 0) < 10 ? '0' : '') + parseInt(map.d, 10) || 0; 30 31 map.H = time.getHours(); 32 map.HH = ((parseInt(map.H, 10) || 0) < 10 ? '0' : '') + parseInt(map.H, 10) || 0; 33 34 map.m = time.getMinutes(); 35 map.mm = ((parseInt(map.m, 10) || 0) < 10 ? '0' : '') + parseInt(map.m, 10) || 0; 36 37 map.s = time.getSeconds(); 38 map.ss = ((parseInt(map.s, 10) || 0) < 10 ? '0' : '') + parseInt(map.s, 10) || 0; 39 40 map.ms = time.getMilliseconds(); 41 42 map.w = week[time.getDay()]; 43 44 const am = map.H < 12 ? 0 : 1; 45 map.ct = $12cc[am]; 46 map.et = $12ec[am]; 47 if (use12HourClock) { 48 map.H %= 12; 49 } 50 return format.replace(map.r, ($1) => { 51 const result = map[map.i ? $1 : $1.toLowerCase()]; 52 return result == null ? $1 : result; 53 }) 54 };