js-utils-chs
Version:
自定义工具函数库
32 lines (31 loc) • 1.5 kB
JavaScript
/**
* 时间戳日期格式化
* @param {Number || null} dateTime 时间戳
* @param {string} fmt yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 长度大于一的有前导零 准确到 年月日时分秒
* @returns string
*/
export function timeFormat(dateTime = null, fmt = "yy-mm-dd") {
// 如果 dateTime 为null , 获取当前的时间
if (!dateTime) dateTime = Number(new Date());
// 如果时间戳的长度为10,就 *1000
if (dateTime.toString().length === 10) dateTime *= 1000;
let date = new Date(dateTime);
let ret;
let 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() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp(`${k}`).exec(fmt); //检索 fmt的k值,返回找到的值,并确定其位置
if (ret) {
// 用于replace方法 把 fmt对应的值替换成ret[1],并且根据fmt值的长度判断是否需要前导零,padStart字符串前填充
fmt = fmt.replace(ret[0], ret[0].length === 1 ? (opt[k]) : (opt[k].padStart(ret[0].length, '0')))
}
}
return fmt
}