export function getChatDateKey(value: string | Date) { const date = typeof value === 'string' ? new Date(value) : value; return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`; } export function formatChatDateLabel(value: string, now = new Date()) { const date = new Date(value); const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); const target = new Date(date.getFullYear(), date.getMonth(), date.getDate()); const diffDays = Math.round((today.getTime() - target.getTime()) / 86_400_000); if (diffDays === 0) return 'Сегодня'; if (diffDays === 1) return 'Вчера'; return new Intl.DateTimeFormat('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date); } export function shouldShowChatDateSeparator(currentCreatedAt: string, previousCreatedAt?: string) { if (!previousCreatedAt) return true; return getChatDateKey(currentCreatedAt) !== getChatDateKey(previousCreatedAt); } export function toDateInputValue(value: string) { const date = new Date(value); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }