1、日期格式化
function dateFormat(fmt, date) { date = typeof date == 'number' ? new Date(date) : (date || new Date()); fmt = fmt || 'yyyy-MM-dd HH:mm:ss'; let ret = ''; const opt = { "y+": date.getFullYear().toString(), // 年 "M+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "m+": date.getMinutes().toString(), // 分 "s+": date.getSeconds().toString(), // 秒 "S+": date.getMilliseconds() // 毫秒 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt;}
2、字符串解析
function parseDate(str, fmt) { fmt = fmt || 'yyyy-MM-dd'; const date = {y: 0, M: 1, d: 0, H: 0, h: 0, m: 0, s: 0, S: 0}; fmt.replace(/([^yMdHmsS]*?)(([yMdHmsS])\3*)([^yMdHmsS]*?)/g, function(m, $1, $2, $3, $4, idx, old) { str = str.replace(new RegExp($1+'(\\d{'+$2.length+'})'+$4), function(_m, _$1) { date[$3] = parseInt(_$1); return ''; }); return ''; }); date.M--; // 月份是从0开始的,所以要减去1 var ret = new Date(date.y, date.M, date.d, date.H, date.m, date.s); if(date.S !== 0) { ret.setMilliseconds(date.S); // 如果设置了毫秒 } return ret;}