今天小编刷视频看到一种对参数进行统一归化的案例,觉得不错记录一下

效果如上,传递三个参数,第一个时间,第二个选择的格式,第三个是否补充0。
具体做法如下
先创建一个辅助函数来判断格式

function _formatNormailze (formatter) {
if (typeof formatter === 'function') {
return formatter
}
if (typeof formatter !== 'string') {
throw new TypeError('formatter is not string')
}
if (formatter === 'date') {
formatter = 'yyyy-MM-dd'
}
if (formatter == 'datetime') {
formatter = "yyyy-MM-dd HH:mm:ss"
}
const formatterFunc = (dateInfo) => {
console.log()
const { yyyy, MM, dd, HH, mm, ss, ms } = dateInfo
formatter = formatter.replace("yyyy", yyyy)
.replaceAll("MM", MM)
.replaceAll("dd", dd)
.replace("HH", HH)
.replace("mm", mm)
.replace("ss", ss)
.replace("ms", ms)
return formatter
}
return formatterFunc
}
然后在函数里面调用辅助函数

之后创建有个dateInfo对象来存储时间

下一步来写个辅助函数来给时间填补0


最后把dateInfo传到新函数里,用有个变量来接收,再return回去。

完整代码如下
function formate (date, formatter, isPad) {
formatter = _formatNormailze(formatter)
const dateInfo = {
yyyy: date.getFullYear().toString(),
MM: (date.getMonth() + 1).toString(),
dd: date.getDate().toString(),
HH: date.getHours().toString(),
mm: date.getMinutes().toString(),
ss: date.getSeconds().toString(),
ms: date.getMilliseconds().toString()
}
function _pad (prop, len) {
dateInfo[prop] = dateInfo[prop].padStart(len, '0')
}
if (isPad) {
_pad('yyyy', 4)
_pad('MM', 2)
_pad('dd', 2)
_pad('HH', 2)
_pad('mm', 2)
_pad('ss', 2)
_pad('ms', 3)
}
const result = formatter(dateInfo)
console.log(result)
return result
}
该文章介绍了一个JavaScript函数,用于对日期参数进行格式化和零填充处理。首先定义了一个辅助函数_formatNormailze,根据输入的格式参数转换为预定义的日期格式。接着,创建了dateInfo对象存储日期信息,并定义了_pad函数来处理零填充。最后,主函数formate整合这些功能,根据isPad参数决定是否填充零,并返回格式化后的日期字符串。
111

被折叠的 条评论
为什么被折叠?



