UNPKG

js-utils-chs

Version:

自定义工具函数库

32 lines (31 loc) 1.5 kB
/** * 时间戳日期格式化 * @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 }