/**
 * 格式化秒数为年、月、日、时、分、秒的字符串表示
 * @param {number} seconds - 秒数
 * @returns {string} 格式化后的字符串，例如："1年2月3日4时5分6秒"
 * @example
 * formatSeconds(30); // 30秒
 * formatSeconds(3600); // 1时1分
 */
export function formatSeconds(seconds: number) {
  // 处理 NaN 和无效输入
  if (isNaN(seconds) || seconds === null || seconds === undefined) {
    return ''
  }

  // 处理边界情况：0秒
  if (seconds === 0) return '0秒'

  // 确保输入为整数
  seconds = Math.floor(Number(seconds))

  // 计算各时间单位
  const totalDays = Math.floor(seconds / 86400)
  const years = Math.floor(totalDays / 365)
  const months = Math.floor((totalDays % 365) / 30)
  const days = (totalDays % 365) % 30
  const hours = Math.floor(seconds / 3600) % 24
  const minutes = Math.floor((seconds % 3600) / 60)
  const secs = seconds % 60

  // 构建结果数组（自动过滤0值）
  const parts = []
  if (years > 0) parts.push(`${years}年`)
  if (months > 0) parts.push(`${months}月`)
  if (days > 0) {
    parts.push(`${days}日`)
    parts.push(`${days}天`)
  }
  if (hours > 0) parts.push(`${hours}时`)
  if (minutes > 0) parts.push(`${minutes}分`)
  if (secs > 0) parts.push(`${secs}秒`)

  // 处理所有单位都是0的情况（当seconds为小数时可能发生）
  return parts.length > 0 ? parts.join('') : '0秒'
}
