前端工具包之日期格式化

前言

咱们在开发过程当中,总会封装一些公共函数来做为咱们的工具来简化代码或者复用代码,为此,我打算整理一下我平常工做中经常使用的一些封装的工具函数,本篇文章为时间日期的格式化工具函数封装。前端

系列文章

1.前端工具包之深浅拷贝git

2.前端工具包之日期格式化web

3.前端工具包之防抖函数bash

4.前端工具包之小工具ide

5.前端工具包之log美化函数

背景

一般开发中咱们会遇到各类类别的日期形式如比较常见的new Date() 输出如下格式工具

Mon Dec 16 2019 11:01:04 GMT+0800 (中国标准时间)post

或者比较通用的字符串类型的格式如2019-12-16 以及附加时分秒的2019-12-16 12:00:00还有一些更加个性化的分隔符如2019/12/16,2019年12月16日等等,有时候咱们须要借助第三方库来实现更复杂的时间日期格式化等操做,但其实有时候每每开发时并不须要作如此多的格式化,所以,这里我简单封装了一个函数来应用通常状况下的日期格式化。下面先贴上代码ui

工具封装

/**
 * 时间格式化
 * @param time (date or 时间戳)
 * @param cFormat
 * @returns {*}
 */
function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (('' + time).length === 10) time = parseInt(time) * 1000
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  // eslint-disable-next-line
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  // eslint-disable-next-line
  return time_str
}
复制代码

这里传入的参数是日期和格式化字符串的类型,默承认以传入date类型或者字符类型的日期,cFormat为格式化模板字符串, 若是是日期时间戳,则转换为标准date日期格式并预先转换成年月日时分秒这种格式化对象。再针对这个对象的年月日时分秒星期来经过正则匹配和替换。spa

console.log(parseTime(new Date()))                          //print 2019-12-16 11:10:31
console.log(parseTime(new Date(),'{y}-{m}-{d}'))            //print 2019-12-16
console.log(parseTime(new Date(),'{y}/{m}/{d}'))            //print 2019/12/16
console.log(parseTime(new Date(),'{y}'))                    //print 2019
console.log(parseTime(new Date(),'{h}:{i}:{s}'))            //print 11:14:31
console.log(parseTime(new Date(),'{y}-{m}-{d} 星期 {a}'))   //print 2019-12-16 星期 一
console.log(parseTime(new Date('2019/12/11')))              //print 2019-12-11 
console.log(parseTime('2019-12-11 12:00:00'))               //print 2019-12-11 12:00:00
console.log(parseTime(new Date().getTime()))                //print 2019-12-16 11:20:17
复制代码

能够传入时间戳或者date对象格式来适配不一样的格式化模板,也能够给date传入默认值来格式化默认日期


开源库

我的主页 | bin-ui | bin-admin

相关文章
相关标签/搜索