/**
|
* 时间格式化工具
|
* 用于任务时间的计算和格式化
|
*/
|
|
/**
|
* 将秒数格式化为"XX分钟"显示
|
* @param {number} durationInSeconds - 持续时间(秒)
|
* @returns {string} 格式化后的时间字符串
|
*/
|
export const formatMinutes = (durationInSeconds) => {
|
if (!durationInSeconds && durationInSeconds !== 0) return '0分钟';
|
|
const minutes = Math.floor(durationInSeconds / 60);
|
return `${minutes}分钟`;
|
};
|
|
/**
|
* 计算从startTime到现在的分钟数
|
* @param {string|number} startTime - 开始时间戳(毫秒)
|
* @returns {number} 持续时间(秒)
|
*/
|
export const calculateDuration = (startTime) => {
|
if (!startTime) return 0;
|
|
const start = typeof startTime === 'string' ? parseInt(startTime, 10) : startTime;
|
const now = Date.now();
|
const durationMs = now - start;
|
|
// 转换为秒数
|
return Math.floor(durationMs / 1000);
|
};
|
|
/**
|
* 获取页面加载时间作为降级方案的开始时间
|
* @returns {number} 页面加载时间戳(毫秒)
|
*/
|
export const getFallbackStartTime = () => {
|
// 使用performance.timing.navigationStart作为更精确的页面加载时间
|
if (typeof performance !== 'undefined' && performance.timing) {
|
return performance.timing.navigationStart;
|
}
|
|
// 降级到Date.now()
|
return Date.now();
|
};
|
|
/**
|
* 解析API返回的时间字符串为时间戳
|
* @param {string} timeString - 时间字符串(如"2026-01-30 09:30:00")
|
* @returns {number} 时间戳(毫秒)
|
*/
|
export const parseTimeString = (timeString) => {
|
if (!timeString) return null;
|
|
// 处理 "YYYY-MM-DD HH:mm:ss" 格式
|
const date = new Date(timeString.replace(' ', 'T'));
|
return isNaN(date.getTime()) ? null : date.getTime();
|
};
|