mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-08 11:45:58 +00:00
36 lines
955 B
TypeScript
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);
|
|
}
|