1. 程式人生 > 其它 >js實現日期格式化封裝-八種格式

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 }