/**
 * Independent time operation tool to facilitate subsequent switch to dayjs
 */
import dayjs from 'dayjs'

const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'
const DATE_FORMAT = 'YYYY-MM-DD'

export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string {
  return dayjs(date).format(format)
}

export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): string {
  return dayjs(date).format(format)
}

export const dateUtil = dayjs

/**
 * 将秒数转换为天、小时、分钟和秒
 * 此函数的目的是将给定的总秒数分解为更易读的时间格式，包括天、小时、分钟和秒
 * 这种转换对于需要将长时间间隔格式化为人类可读形式的应用程序非常有用
 *
 * @param seconds 总秒数，即需要转换的秒数
 * @returns 返回一个对象，包含天（days）、小时（hours）、分钟（minutes）和秒（seconds）
 */
export function convertSeconds(seconds) {
  // 计算天数，通过总秒数除以一天的秒数（3600 * 24）并向下取整
  const days = Math.floor(seconds / (3600 * 24))
  // 计算剩余秒数，即不足以构成一天的秒数
  seconds %= 3600 * 24

  // 计算小时数，通过剩余秒数除以一小时的秒数（3600）并向下取整
  const hours = Math.floor(seconds / 3600)
  // 计算剩余秒数，即不足以构成一小时的秒数
  seconds %= 3600

  // 计算分钟数，通过剩余秒数除以一分钟的秒数（60）并向下取整
  const minutes = Math.floor(seconds / 60)
  // 计算剩余秒数，即不足以构成一分钟的秒数
  seconds %= 60

  // 返回包含天、小时、分钟和秒的对象
  return `${days ? days + '天' : ''}${hours ? hours + '小时' : ''}${minutes ? minutes + '分钟' : ''}${seconds}秒`
}
