vibetunnel/web/src/shared/utils/time.ts

36 lines
955 B
TypeScript

/**
* Formats a duration in milliseconds to a human-readable string
*/
export function formatDuration(ms: number): string {
const seconds = Math.floor(ms / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);
if (days > 0) {
return `${days}d ${hours % 24}h`;
} else if (hours > 0) {
return `${hours}h ${minutes % 60}m`;
} else if (minutes > 0) {
return `${minutes}m ${seconds % 60}s`;
} else {
return `${seconds}s`;
}
}
/**
* Calculates duration from a start time to now
*/
export function getDurationFromStart(startTime: string): number {
const start = new Date(startTime).getTime();
const now = Date.now();
return now - start;
}
/**
* Formats session duration for display
*/
export function formatSessionDuration(startedAt: string): string {
const duration = getDurationFromStart(startedAt);
return formatDuration(duration);
}