/**
 * 格式化工具函数
 */

/**
 * 格式化金额为货币格式
 * @param value 金额数值
 * @param symbol 货币符号，默认为人民币符号 ¥
 * @returns 格式化后的货币字符串
 * @example
 * formatCurrency(1234.5) // '¥1,234.50'
 * formatCurrency(0) // '¥0.00'
 * formatCurrency(-100) // '¥-100.00'
 */
export function formatCurrency(value: number, symbol: string = '¥'): string {
  const formattedNumber = value.toLocaleString('zh-CN', {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  })
  return `${symbol}${formattedNumber}`
}

/**
 * 格式化数字，添加千分位分隔符
 * @param value 数值
 * @returns 格式化后的数字字符串
 * @example
 * formatNumber(1234567) // '1,234,567'
 */
export function formatNumber(value: number): string {
  return value.toLocaleString('zh-CN')
}

/**
 * 格式化日期时间
 * @param dateStr 日期字符串
 * @param format 格式，默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns 格式化后的日期时间字符串
 * @example
 * formatDateTime('2024-01-15T10:30:00') // '2024-01-15 10:30:00'
 */
export function formatDateTime(dateStr: string | null | undefined): string {
  if (!dateStr) return '-'
  
  try {
    const date = new Date(dateStr)
    if (isNaN(date.getTime())) return '-'
    
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    const hours = String(date.getHours()).padStart(2, '0')
    const minutes = String(date.getMinutes()).padStart(2, '0')
    const seconds = String(date.getSeconds()).padStart(2, '0')
    
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  } catch {
    return '-'
  }
}

/**
 * 格式化日期
 * @param dateStr 日期字符串
 * @returns 格式化后的日期字符串
 * @example
 * formatDate('2024-01-15T10:30:00') // '2024-01-15'
 */
export function formatDate(dateStr: string | null | undefined): string {
  if (!dateStr) return '-'
  
  try {
    const date = new Date(dateStr)
    if (isNaN(date.getTime())) return '-'
    
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    
    return `${year}-${month}-${day}`
  } catch {
    return '-'
  }
}
