js实现日期格式化封装-八种格式

封装一个momentTime.js文件,包含8种格式.
需要传两个参数:

  • 时间戳:stamp
  • 格式化的类型:type,
日期补零的方法用到es6语法中的padStart(length,‘字符’):
  • 第一个参数是指定生成的字符串的最小长度,
  • 第二个参数是用来补全的字符串。
  • 如果没有指定第二个参数,默认用空格填充。
    需要注意的是需要将获取到的年月日转为字符串,可以直接拼接一个引号
padStart()方法,padEnd()方法
ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。
ios兼容问题
使用 new Date(date).getTime() 转化成时间戳(格式:YYYY-mm-dd HH:MM:SS)
  • 在android系统上可以正常获取到, 但是再ios系统上得到确是NaN。
  • ios不兼职 yyyy-MM-dd HH:mm:ss 这种时间格式
  • 解决:需要把-替换成 /,如 yyyy/MM/dd HH:mm:ss这种格式。
【js实现日期格式化封装-八种格式】解决:new Date(date.replace(/-/g,’/’)).getTime();
function getTimeObj(time) { let newdata = https://www.it610.com/article/new Date(time)let y = newdata.getFullYear() let m = newdata.getMonth() + 1 let d = newdata.getDate() let hh = newdata.getHours()let mm = newdata.getMinutes() let ss = newdata.getSeconds() return { y, m, d, hh, mm, ss } }

/*type:0 =>2021-09-12 默认 type:1 =>2021-09-12 10:34:12 type:2 =>09-12 10:34:12 type:3 =>09-12 type:4 =>2021/09/12 type:5 =>2021/09/12 10:34:12 type:6 =>09/12 10:34:12 type:7 =>09/12 */ function filterTime(stamp, type = 0) { let str = stamp if (stamp && stamp.indexOf('-') > 0) { str = new Date(stamp.replace(/-/g, '/')).getTime() } let date = new Date(str) let y = date.getFullYear(); let m = (date.getMonth() + 1 + '').padStart(2, '0'); let d = (date.getDate() + '').padStart(2, '0'); let hh = (date.getHours() + '').padStart(2, '0') let mm = (date.getMinutes() + '').padStart(2, '0') let ss = (date.getSeconds() + '').padStart(2, '0') let time; switch (type) { case 0: time = `${y}-${m}-${d}`; break; case 1: time = `${y}-${m}-${d} ${hh}:${mm}:${ss}`; break; case 2: time = `${m}-${d} ${hh}:${mm}:${ss}`; break; case 3: time = `${m}-${d}`; break; case 4: time = `${y}/${m}/${d}`; break; case 5: time = `${y}/${m}/${d} ${hh}:${mm}:${ss}`; break; case 6: time = `${m}/${d} ${hh}:${mm}:${ss}`; break; case 7: time = `${m}/${d}`; break; } return time; } module.exports = { getTimeObj, filterTime }

    推荐阅读