Javascript 参数归一化

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

 

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

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值