// utils/timeFormat.js

/**
 * 时间格式化工具函数
 * 支持多种时间格式输入和多种输出格式
 */

/**
 * 格式化时间为指定格式
 * @param {string|number|Date} time - 时间输入（时间戳、日期字符串或Date对象）
 * @param {string} format - 输出格式，默认：YYYY-MM-DD HH:mm:ss
 * @returns {string} 格式化后的时间字符串
 */
export function formatTime(time, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!time) return '未知时间';
  
  let date;
  if (time instanceof Date) {
    date = time;
  } else if (typeof time === 'number') {
    date = new Date(time);
  } else {
    // 修复1：仅替换日期分隔符，保留秒和时区信息
    const sanitized = time
      .replace(/(\d{4})-(\d{2})-(\d{2})/, '$1/$2/$3') // 只替换日期部分的短横线
      .replace(/\.\d{3}/, ''); // 精确移除毫秒（保留秒）
    
    date = new Date(sanitized);
    
    // 修复2：如果解析失败，尝试直接解析原始字符串
    if (isNaN(date.getTime())) {
      date = new Date(time);
    }
  }
  
  if (isNaN(date.getTime())) {
    console.error('解析失败的时间:', time); // 调试日志
    return '无效时间';
  }

  // 原有格式化代码保持不变
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  const hour = String(date.getHours()).padStart(2, '0');
  const minute = String(date.getMinutes()).padStart(2, '0');
  const second = String(date.getSeconds()).padStart(2, '0');

  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hour)
    .replace('mm', minute)
    .replace('ss', second);
}
/**
 * 格式化时间为相对时间（如：5分钟前）
 * @param {string|number|Date} time - 时间输入
 * @returns {string} 相对时间字符串
 */
export function formatRelativeTime(time) {
  if (!time) return '未知时间';
  
  
  
  const now = new Date();
  const date = new Date(time);
  const diff = now - date;
  
  const minute = 1000 * 60;
  const hour = minute * 60;
  const day = hour * 24;
  const month = day * 30;
  const year = day * 365;
  
  if (diff < minute) {
    return Math.floor(diff / 1000) + '秒前';
  } else if (diff < hour) {
    return Math.floor(diff / minute) + '分钟前';
  } else if (diff < day) {
    return Math.floor(diff / hour) + '小时前';
  } else if (diff < month) {
    return Math.floor(diff / day) + '天前';
  } else if (diff < year) {
    return Math.floor(diff / month) + '月前';
  } else {
    return Math.floor(diff / year) + '年前';
  }
}

/**
 * 获取两个时间之间的差值
 * @param {string|number|Date} startTime - 开始时间
 * @param {string|number|Date} endTime - 结束时间
 * @param {string} unit - 时间单位（'second', 'minute', 'hour', 'day'）
 * @returns {number} 时间差值
 */
export function getTimeDiff(startTime, endTime, unit = 'minute') {
  const start = new Date(startTime);
  const end = new Date(endTime);
  const diff = end - start;
  
  const units = {
    'second': 1000,
    'minute': 1000 * 60,
    'hour': 1000 * 60 * 60,
    'day': 1000 * 60 * 60 * 24
  };
  
  return Math.floor(diff / units[unit] || 0);
}