時間戳轉換成 yyyy-MM-dd hh:mm 格式 函數封裝

/**

 * 將評價的時間戳轉換成 yyyy-MM-dd hh:mm 格式

 *

 * RegExp.$1 代表匹配到的括號裏面的多個值,這裏是yyyy替換成傳入的時間戳中獲取的年份,去替換獲取的 y 的長度,

 * (date.getFullYear() + '').substr(4 - RegExp.$1.length) 這部分計算之後就是從 0 開始截取,

 * 那就是截取倒了4位完整的年份,如果是 yy 就是兩個那就是從2開始截取就是 17 年, + '' 的作用是將他轉化成字符串的形式

 *

 * 至於日期之間的連接符我們沒有去匹配,所以不用管還是原來的連接符

 */

 

 export function formatDate(date, fmt) {

  if (/(y+)/.test(fmt)) {

    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));

  }

  let o = {

    'M+': date.getMonth() + 1,

    'd+': date.getDate(),

    'h+': date.getHours(),

    'm+': date.getMinutes(),

    's+': date.getSeconds()

  };

 

  for (let k in o) {

    if (new RegExp(`(${k})`).test(fmt)) {

      let str = o[k] + '';

      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));

    }

  }

  return fmt;

 };

 

 /**

  *

  * @param {*} str 代表傳入的參數

  * 比如說傳入了 是單位數 9 ,那麼就返回 009,傳入的參數 9 長度是1,然後從第一位開始截取,那就是返回 09

  *

  * 比如說傳入的是 12 的之類的雙位數,那麼就返回 0012, 參數長度是2,從第二位開始截取,那麼就是 返回 12

  */

 function padLeftZero(str) {

   return ('00' + str).substr(str.length);

 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章