JavaScript格式化时间戳
图
在时间相关的处理中,时间戳的转换频率都比较高,无论是接口返回的时间戳,还是某些特定场景中的时间戳计算,都会遇到,而解决好原生JS的时间戳处理,在Vue等组件中也能方便的使用

格式化时间戳

格式如:yyyy-MM-dd HH:mm:ss

// 注意date参数为new Date()
function dateFormat(fmt, date) {
  let ret;
  const opt = {
    "y+": date.getFullYear().toString(),        // 年
    "M+": (date.getMonth() + 1).toString(),     // 月
    "d+": date.getDate().toString(),            // 日
    "H+": date.getHours().toString(),           // 时
    "m+": date.getMinutes().toString(),         // 分
    "s+": date.getSeconds().toString()          // 秒
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
  };
  for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
    }
  }
  return fmt;
}

Vue过滤使用

// 格式化时间戳
function dateFormat(date) {
  if (date == 0) {
    return ''
  }
  let fmt = 'yyyy-MM-dd HH:mm:ss'
  date = new Date(date)
  let ret
  const opt = {
    'y+': date.getFullYear().toString(), // 年
    'M+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'm+': date.getMinutes().toString(), // 分
    's+': date.getSeconds().toString(), // 秒
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
  }
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt)
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
      )
    }
  }
  return fmt
}

使用方式

this.dateFormat(new Date(e.value))

时间字符串转时间戳

var dateString = "2021-10-10 10:30:00";  // 时间字符串
var timestamp = Date.parse(dateString);  // 将时间字符串转换为时间戳
console.log(timestamp);