const UNITS: [Intl.RelativeTimeFormatUnit, number][] = [ ['year', 365 * 24 * 60 * 60], ['month', 30 * 24 * 60 * 60], ['week', 7 * 24 * 60 * 60], ['day', 24 * 60 * 60], ['hour', 60 * 60], ['minute', 60], ['second', 1], ] export function formatRelativeTime(dateTime: string, now: Date = new Date()): string { const target = new Date(dateTime) const diffSeconds = Math.round((target.getTime() - now.getTime()) / 1000) for (const [unit, secondsInUnit] of UNITS) { if (Math.abs(diffSeconds) >= secondsInUnit) { const value = Math.round(diffSeconds / secondsInUnit) return new Intl.RelativeTimeFormat(undefined, { numeric: 'auto' }).format(value, unit) } } return new Intl.RelativeTimeFormat(undefined, { numeric: 'auto' }).format(0, 'second') }