import { parseDbDateTime } from './timezone'; // Parses a MySQL DATETIME string correctly regardless of the Node // process's own timezone — see lib/timezone.ts. export function parseDbDate(s: string): Date { return parseDbDateTime(s); } export function diffMinutes(startStr: string, endStr: string | null): number | null { if (!endStr) return null; const start = parseDbDate(startStr); const end = parseDbDate(endStr); return Math.round((end.getTime() - start.getTime()) / 60000); } // "2h ago", "3d ago", etc. — used for "last connected" displays. export function formatRelativeTime(dbDateStr: string | null): string { if (!dbDateStr) return '—'; const diffMs = Date.now() - parseDbDate(dbDateStr).getTime(); const diffMin = Math.round(diffMs / 60_000); if (diffMin < 1) return 'just now'; if (diffMin < 60) return `${diffMin}m ago`; const diffHr = Math.round(diffMin / 60); if (diffHr < 24) return `${diffHr}h ago`; const diffDay = Math.round(diffHr / 24); if (diffDay < 30) return `${diffDay}d ago`; const diffMonth = Math.round(diffDay / 30); if (diffMonth < 12) return `${diffMonth}mo ago`; return `${Math.round(diffMonth / 12)}y ago`; }