/*
 * @Author: code4eat awesomedema@gmail.com
 * @Date: 2025-06-05 16:10:26
 * @LastEditors: code4eat awesomedema@gmail.com
 * @LastEditTime: 2025-06-06 15:09:38
 * @FilePath: /bi2025/src/utils/dateUtils.ts
 * @Description: 日期时间相关工具函数
 */

/**
 * 格式化日期时间为 'YYYY-MM-DD HH:mm:ss' 格式
 * @param date Date对象，默认为当前时间
 * @returns 格式化后的日期时间字符串
 */
export function formatDateTime(date: Date = new Date()): string {
  const pad = (n: number) => n.toString().padStart(2, '0');
  return (
    date.getFullYear() +
    '-' + pad(date.getMonth() + 1) +
    '-' + pad(date.getDate()) +
    ' ' + pad(date.getHours()) +
    ':' + pad(date.getMinutes()) +
    ':' + pad(date.getSeconds())
  );
}

/**
 * 获取当前时间的格式化字符串，用于接口请求
 * @returns 当前时间的格式化字符串，'YYYY-MM-DD HH:mm:ss' 格式
 */
export function getCurrentDateTime(): string {
  return formatDateTime(new Date());
  // return '2025-05-20 15:25:00'
}

/**
 * 格式化日期为 'MM/DD' 格式
 * @param dateStr 日期字符串，格式为 'YYYY-MM-DD' 或 'YYYY-MM-DD HH:mm:ss'
 * @returns 格式化后的 'MM/DD' 格式字符串
 */
export function formatToMonthDay(dateStr: string): string {
  // 兼容 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss
  const d = dateStr.length > 10 ? dateStr.slice(5, 10) : dateStr.replace(/^(\d{4})-/, '');
  return d.replace('-', '/');
}

/**
 * 将日期对象格式化为指定格式
 * @param date Date对象
 * @param format 格式字符串，例如 'YYYY-MM-DD'、'MM/DD'、'HH:mm'
 * @returns 格式化后的字符串
 */
export function formatDate(date: Date, format: string): string {
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hour = date.getHours();
  const minute = date.getMinutes();
  const second = date.getSeconds();
  
  const pad = (n: number) => n.toString().padStart(2, '0');
  
  // 替换格式字符串中的占位符
  return format
    .replace('YYYY', year.toString())
    .replace('MM', pad(month))
    .replace('DD', pad(day))
    .replace('HH', pad(hour))
    .replace('mm', pad(minute))
    .replace('ss', pad(second));
} 