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