js时间格式化处理

js时间格式化处理

js函数,将时间戳格式化为日期对象或自定义格式的日期字符串

/**
 * 将时间戳格式化为日期对象或自定义格式的日期字符串
 * 
 * @param {number} [timestamp=Date.now()] - 需要格式化的时间戳。如果没有提供,默认为当前时间戳
 * @param {function} [callback] - 一个可选的回调函数,将日期对象作为参数,并返回自定义格式的日期字符串
 * @returns {Object|string} 如果提供了回调函数,则返回回调函数的结果。否则,将返回一个包含格式化日期组件的对象。
 */
function formatDate (timestamp, callback) {
  const date = new Date(timestamp || Date.now())

  const result = {
    YYYY: date.getFullYear(),
    YY: Number(date.getFullYear().toString().slice(-2)),
    M: date.getMonth() + 1,
    D: date.getDate(),
    h: date.getHours(),
    m: date.getMinutes(),
    s: date.getSeconds()
  }

  if (callback && typeof callback === 'function') {
    return callback(result)
  } else {
    return result
  }
}

/**
 * 用指定的字符填充字符串的开头,直至所需的长度。
 * 
 * @param {string|number} str - 要填充的字符串。如果不是字符串,则将转换为字符串
 * @param {number} len - 输出字符串的预期长度
 * @param {string} [chars=''] - 用于填充输入字符串的字符串。如果没有提供,默认为空格字符
 * @returns {string} - 填充后的字符串。如果原始字符串长度大于或等于所需的长度,则返回原始字符串。
 */
function padStart (str, len, chars) {
  if (typeof str !== 'string') {
    str = str.toString()
  }
  chars = chars || ''
  const strLength = str.length
  const padLength = len - strLength
  if (padLength <= 0) {
    return str
  }
  let fullPadString = ''
  while (fullPadString.length < padLength) {
    fullPadString += chars
  }
  return fullPadString.slice(0, padLength) + str
}

Comment