All files / formatTime formatTime.ts

100% Statements 10/10
80% Branches 4/5
100% Functions 1/1
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                                      1x 2x 2x 2x                 2x 2x               2x 14x 4x           2x    
/**
 * @description 时间戳转字符串
 * @function formatTime
 * @returns {string} 根据fmt格式返回对应格式化后的日期字符串
 * @param {number} timestamp - 时间戳
 * @param {string} [fmt = 'yyyy-MM-dd'] - 想要获取格式化后日期字符串的模板
 * @author liukun <919590347@qq.com>
 * @example
 * import { formatTime } from '@wont/utils'
 * // yyyy-MM-dd
 * formatTime(1603809694212)  // returns '2020-10-27'
 * // yyyy/MM/dd
 * formatTime(1603809694212, 'yyyy/MM/dd')  // returns '2020/10/27'
 * // yyyy-MM-dd hh:mm:ss
 * formatTime(1603809694212, 'yyyy-MM-dd hh:mm:ss')  // returns '2020-10-27 22:41:34'
 * // yyyy-MM-dd h:m:s
 * formatTime(1603809694212, 'yyyy-MM-dd h:m:s')  // returns '2020-10-27 22:41:34'
 */
 
export function formatTime(timestamp: number, fmt = 'yyyy-MM-dd'): string {
  const date = new Date(timestamp)
  let result = fmt
  const o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
    S: date.getMilliseconds(), // 毫秒
  }
  if (/(y+)/.test(fmt)) {
    result = result.replace(
      RegExp.$1,
      date
        .getFullYear()
        .toString()
        .substr(4 - RegExp.$1.length),
    )
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(result)) {
      result = result.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? o[k] : `00${o[k]}`.substr(`${o[k]}`.length),
      )
    }
  }
  return result
}