Bootstrap

js格式化时间以及格式化时间为中文,传入时间字符串或者时间戳都可以,cv即用

 涉及到的公用的方法
/**
 * 转时间
 * @param {String|Number|dateTime} 时间,时间字符串,时间戳,时间戳字符串都可以
 *        date不传或传入null 表示取当前时间
 */
function toDate(dateTime) {
  let date
  // 若传入时间为假值,则取当前时间
  if (!dateTime) {
    date = new Date()
  } else if (/^\d{10}$/.test(dateTime?.toString().trim())) {
    // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)
    date = new Date(dateTime * 1000)
  } else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
    // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容
    date = new Date(Number(dateTime))
  } else {
    // 其他都认为符合 RFC 2822 规范
    // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间
    date = new Date(
      typeof dateTime === 'string'
        ? dateTime.replace(/-/g, '/')
        : dateTime
    )
  }

  return date
}
格式化时间 
/**
 * @description 格式化时间,输出时间字符串
 * @param {String|Number}时间,时间字符串,时间戳,时间戳字符串都可以
 *        date不传或传入null 表示取当前时间
 * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd
 * @returns {string} 返回格式化后的字符串
 */
function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
  const date = toDate(dateTime)

  const timeSource = {
    'y': date.getFullYear().toString(), // 年
    'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
    'd': date.getDate().toString().padStart(2, '0'), // 日
    'h': date.getHours().toString().padStart(2, '0'), // 时
    'M': date.getMinutes().toString().padStart(2, '0'), // 分
    's': date.getSeconds().toString().padStart(2, '0') // 秒
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
  }

  for (const key in timeSource) {
    const [ret] = new RegExp(`${key}+`).exec(formatStr) || []
    if (ret) {
      // 年可能只需展示两位
      const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0
      formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))
    }
  }

  return formatStr
}

格式化时间为中文(如:2024年04月20日 16:23:22)
*
 * @description 转时间加文字 例:(2022-12-01 转 2022年12月01日)  ||  (12-01 转 12月01日);
 * @param {String|Number} 时间戳,时间字符串(仅支持  转  年月日字符)
 * @param {Boolean} isYear 是否有年 默认为true 转 2022年10月12日, false 转 10月12日
 * @returns {String} 返回格式化后的字符串
 */
function chineseDate(dateTime = null, isYear = true) {
  const date = toDate(dateTime)
  const timeSource = {
    'y': date.getFullYear().toString(), // 年
    'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
    'd': date.getDate().toString().padStart(2, '0'), // 日
    // 有其他格式化字符需求可以继续添加,必须转化成字符串
  }
  let numStrTime = ''
  if (isYear) {
    numStrTime = timeSource['y'] + '年' + timeSource['m'] + '月' + timeSource['d'] + '日'
  } else {
    numStrTime = timeSource['m'] + '月' + timeSource['d'] + '日'
  }
  return numStrTime
}

;