时间转换工具函数

0 阅读1分钟

后端返回的时间数据经常是2026-01-15T15:34:25这种,所以需要把时间转换一下


/**
 * 将带时区的时间字符串转换为无时区显示的字符串
 * @param dateTimeStr 后端返回的时间字符串,如 "2025-11-20 06:00:17 UTC"
 * @param keepOriginalTime 是否保持原始时间(不转换时区),默认false
 * @returns 无时区显示的时间字符串
 */
export function formatBackendTime(dateTimeStr: string, keepOriginalTime: boolean = true): string {
  const date = new Date(dateTimeStr);

  if (keepOriginalTime) {
    // 保持UTC时间
    const utcYear = date.getUTCFullYear();
    const utcMonth = String(date.getUTCMonth() + 1).padStart(2, '0');
    const utcDay = String(date.getUTCDate()).padStart(2, '0');
    const utcHours = String(date.getUTCHours()).padStart(2, '0');
    const utcMinutes = String(date.getUTCMinutes()).padStart(2, '0');
    const utcSeconds = String(date.getUTCSeconds()).padStart(2, '0');

    return `${utcYear}-${utcMonth}-${utcDay} ${utcHours}:${utcMinutes}:${utcSeconds}`;
  } else {
    // 转换为本地时间
    const localYear = date.getFullYear();
    const localMonth = String(date.getMonth() + 1).padStart(2, '0');
    const localDay = String(date.getDate()).padStart(2, '0');
    const localHours = String(date.getHours()).padStart(2, '0');
    const localMinutes = String(date.getMinutes()).padStart(2, '0');
    const localSeconds = String(date.getSeconds()).padStart(2, '0');

    return `${localYear}-${localMonth}-${localDay} ${localHours}:${localMinutes}:${localSeconds}`;
  }
}

  • 格式化分钟为“小时+分钟”
// 格式化分钟为“小时+分钟”
export function formatMinutesToHours(minutes: number | undefined): string {
  if (minutes == null || minutes < 0) {
    return '0分钟';
  }

  const hours = Math.floor(minutes / 60);
  const mins = minutes % 60;

  if (hours > 0 && mins > 0) {
    return `${hours}小时${mins}分钟`;
  } else if (hours > 0) {
    return `${hours}小时`;
  } else {
    return `${mins}分钟`;
  }
}