Javascript 参数归一化

该文章介绍了一个JavaScript函数,用于对日期参数进行格式化和零填充处理。首先定义了一个辅助函数_formatNormailze,根据输入的格式参数转换为预定义的日期格式。接着,创建了dateInfo对象存储日期信息,并定义了_pad函数来处理零填充。最后,主函数formate整合这些功能,根据isPad参数决定是否填充零,并返回格式化后的日期字符串。

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

 

 效果如上,传递三个参数,第一个时间,第二个选择的格式,第三个是否补充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

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值