js时间戳转换为"yyyy-MM-dd hh:mm:ss"格式(借用正则)

今天记录一种使用正则表达式将时间戳(如“1469261964000”)转换为 yyyy-MM-dd hh:mm 格式时间(如“2018-12-6 15:27”)的方法。

一、背景知识

先介绍一些相关知识点。

  1. 时间戳

此处指 JS 时间戳,是当前时间到 1970年1月1日00:00:00 UTC 对应的毫秒数,和 unix 时间戳并非同一概念(表示秒数)。

  1. 正则表达式

参考 廖雪峰-正则表达式

正则中用"()"括起来的部分表示子串(分组);
$1表示第一个子串中的内容,$2表示第二个,依此类推...

二、具体实现

function farmatDate(time, fmt) {
  if (/(y+)/.test(fmt) {
    fmt = fmt.replace(RegExp.$1, date.getFullYear() + '').substr(4 - RegExp.$1.length);
  }

  let o = {
    'M+': getMonth() + 1,
    'd+': getDay(),
    'h+': getHours(),
    'm+': getMinutes(),
    's+': getSeconds()
  };

  for (let key in o) {
    if(RegExp(`(${key})`.test(fmt)) {
      let str = o[key] + '';
      fmt = fmt.replace(RegExp.$1, str.length === 2 ? str:padLeftZero(str);
    }
  }
  return fmt;
}

// 函数 padLeftZero 的作用:如果月份为1位(如9),则在其左边补0(变为09)
function padLeftZero(str) {
  return '00' + substr(str.length);
}

// 举例
let res = formatDate('1469261964000', 'yyyy-MM-dd hh:mm');
console.log(res); // 2016-07-06 16:19

你可能感兴趣的:(js时间戳转换为"yyyy-MM-dd hh:mm:ss"格式(借用正则))