JS日期格式化--正则

匿名 (未验证) 提交于 2019-12-03 00:15:02
//采用正则格式化日期 function dateFormat(fmt, date) {     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) {

      let reg = new RegExp("(" + k + ")");
      ret = reg.exec(fmt);
      console.log(reg);
      console.log(ret);

      if (ret) {             fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))             };         };     return fmt; }

通过验证,如下图:

通过加断点采用test方法时,成功返回true,失败返回false。

无论采用哪种方式都可以使用RegExp对象,

padStart(len,str) :该方法用于补全字符串

len:补全长度

str:补充的字符串,使用这个字符串补充。

fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))

解释:

fmt: yyyy-mm-dd HH:MM:SS

ret:每一次匹配的结果,比如匹配到mm,ret[1] = mm,ret[1].length = 2,表示日期格式月份的长度应该是2,此时

(ret[1].length == 1) ?不成立,执行
opt[k].padStart(ret[1].length, "0")),
opt[k]是月份值,如果月份长度不是月份格式长度,表示此时月份小于10,要对月份数据用 0 进行补全,否则不用补全。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!