import dayjs from 'dayjs';

/**
 * 从日期时间字符串中提取时间部分
 * @param dateTime 日期时间字符串，格式如 "2024-01-01 10:00:00"
 * @returns 时间字符串，格式如 "10:00"
 */
export function extractTimeFromDateTime(dateTime) {
  if (!dateTime) return null;

  // 使用 dayjs 解析日期时间
  var date = dayjs(dateTime);
  if (!date.isValid()) {
    console.warn("[TimeUtils] \u65E0\u6548\u7684\u65E5\u671F\u65F6\u95F4\u683C\u5F0F: ".concat(dateTime));
    return null;
  }

  // 返回 HH:mm 格式的时间
  return date.format('HH:mm');
}

/**
 * 将时间字符串转换为分钟数（用于排序）
 * @param timeStr 时间字符串，格式如 "10:00" 或 "14:30"
 * @returns 从00:00开始的分钟数
 */
export function timeStringToMinutes(timeStr) {
  if (!timeStr) return 0;

  // 使用 dayjs 解析时间字符串
  // 由于只有时间没有日期，我们添加一个固定日期来解析
  var date = dayjs("2000-01-01 ".concat(timeStr), 'YYYY-MM-DD HH:mm');
  if (!date.isValid()) {
    console.warn("[TimeUtils] \u65E0\u6548\u7684\u65F6\u95F4\u683C\u5F0F: ".concat(timeStr));
    return 0;
  }

  // 计算从00:00开始的分钟数
  return date.hour() * 60 + date.minute();
}

/**
 * 对时间点数组进行排序
 * @param timePoints 时间点数组
 * @returns 排序后的时间点数组
 */
export function sortTimePoints(timePoints) {
  return timePoints.sort(function (a, b) {
    var timeA = timeStringToMinutes(a);
    var timeB = timeStringToMinutes(b);
    return timeA - timeB;
  });
}