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这种格式。

解决:new Date(date.replace(/-/g,’/’)).getTime();

function getTimeObj(time) {
    let newdata = 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 }

你可能感兴趣的:(js实现日期格式化封装--八种)