30、常用js方法

60 阅读1分钟
/**
 * 格式化数字为三位相隔,保留小数点后两位金额形式
 * @param {String} str
 */
export function formatToDollars (value) {
  if (!value) {
    return '0.00'
  }
  return value.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}

/**
 * 分钟转换为"XX天XX小时XX分钟XX秒"格式
 * @param {String} value 分钟数
 * @param {Boolean} isFormatted 24小时内,显示为00:00:00格式
 */
export function secondToTimeChar (value, isFormatted) {
  if (!value || value < 0) {
    return '0'
  }
  const M = 60 // 一分钟
  const H = 60 * 60 // 一小时
  const D = 60 * 60 * 24 // 一天

  let time = +value
  let day = 0
  let hour = 0
  let minute = 0
  let second = 0
  if (time >= D) {
    day = Math.floor(time / D)
    time = time % D
  }
  if (time >= H && time < D) {
    hour = Math.floor(time / H)
    time = time % H
  }
  if (time >= M && time < H) {
    minute = Math.floor(time / M)
    time = time % M
  }
  second = time
  if (isFormatted) {
    return `${hour < 10 ? `0${hour}` : hour}:${minute < 10 ? `0${minute}` : minute}:${second < 10 ? `0${second}` : second}`
  }
  return `${day ? `${day}天` : ''}${hour ? `${hour}小时` : ''}${minute ? `${minute}分钟` : ''}${second ? `${second}秒` : ''}`
}

/**
 * 获取当前时间的00:00:00
 * @param {Array} data
 */
export function getCurrentTimeEarly () {
  return vue.$dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss')
}
/**
 * 获取当前时间的23:59:59
 * @param {Array} data
 */
export function getCurrentTime (format = 'YYYY-MM-DD HH:mm:ss') {
  return vue.$dayjs().startOf('day').add(86399000, 'millisecond').format(format)
}
/**
 * 获取当前时间前7天
 * @param {Array} data
 */
export function getDayBeforeCurrentTime (format = 'YYYY-MM-DD HH:mm:ss') {
  return vue.$dayjs().startOf('day').subtract(6, 'day').format(format)
}
/**
 * 获取当前时间前3天
 * @param {Array} data
 */
export function getDayBefore3CurrentTime (format = 'YYYY-MM-DD HH:mm:ss') {
  return vue.$dayjs().startOf('day').subtract(2, 'day').format(format)
}
/**
 * 计算多个时间段之间是否有交叉
 * @param { Array } allTimeList 需要比较的时间段数组 [{time:[startTime1, endTime1]},{time:[startTime2, endTime2]}]
 * @return { Boolean } 是否有交叉
 */
export function isHasPepeatTime (allTimeList) {
  let timeList = cloneDeep(allTimeList)
  let startTimeArr = []
  let endTimeArr = []
  let len = timeList.length
  timeList.forEach((timeArr) => {
    startTimeArr.push(timeArr.time[0])
    endTimeArr.push(timeArr.time[1])
  })
  startTimeArr = startTimeArr.sort()
  endTimeArr = endTimeArr.sort()
  for (let i = 1; i < len; i++) {
    if (startTimeArr[i] < endTimeArr[i - 1]) {
      return true
    }
  }
  return false
}