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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 Object 对象 教程:https://wangdoc.com/javascript/stdlib/obje...
    智勇双全的小六阅读 6,729评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,475评论 0 4
  • 推荐几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1阅读 13,994评论 9 151
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,781评论 0 1
  • 谦谦君子温润如玉。是对君子最好的赞扬了吧,多美的词,这句话让我满心欢喜。 然而,在现实中,我们也许觉得见不到也...
    龙贝子阅读 4,340评论 0 1