/** * Date formatting utilities for recent notes display */ /** * Format a date as relative time in English (e.g., "2 hours ago", "yesterday") */ export function formatRelativeTime(date: Date | string): string { const now = new Date() const then = new Date(date) const seconds = Math.floor((now.getTime() - then.getTime()) / 1000) if (seconds < 60) return 'just now' const minutes = Math.floor(seconds / 60) if (minutes < 60) { return `${minutes} minute${minutes > 1 ? 's' : ''} ago` } const hours = Math.floor(minutes / 60) if (hours < 24) { return `${hours} hour${hours > 1 ? 's' : ''} ago` } const days = Math.floor(hours / 24) if (days < 7) { return `${days} day${days > 1 ? 's' : ''} ago` } // For dates older than 7 days, show absolute date return then.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: then.getFullYear() !== now.getFullYear() ? 'numeric' : undefined }) } /** * Format a date as relative time in French (e.g., "il y a 2 heures", "hier") */ export function formatRelativeTimeFR(date: Date | string): string { const now = new Date() const then = new Date(date) const seconds = Math.floor((now.getTime() - then.getTime()) / 1000) if (seconds < 60) return "à l'instant" const minutes = Math.floor(seconds / 60) if (minutes < 60) { return `il y a ${minutes} minute${minutes > 1 ? 's' : ''}` } const hours = Math.floor(minutes / 60) if (hours < 24) { return `il y a ${hours} heure${hours > 1 ? 's' : ''}` } const days = Math.floor(hours / 24) if (days < 7) { return `il y a ${days} jour${days > 1 ? 's' : ''}` } // For dates older than 7 days, show absolute date return then.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short', year: then.getFullYear() !== now.getFullYear() ? 'numeric' : undefined }) }