export function getAge(dateString: string, comparedDate?: string): { idFormat: string; extFormat: string } { const birthDate = new Date(dateString); const today = new Date(); if (comparedDate) { const comparedDateObj = new Date(comparedDate); today.setFullYear(comparedDateObj.getFullYear()); today.setMonth(comparedDateObj.getMonth()); today.setDate(comparedDateObj.getDate()); } // Format the date part const options: Intl.DateTimeFormatOptions = { day: 'numeric', month: 'long', year: 'numeric' }; const idFormat = birthDate.toLocaleDateString('id-ID', options); // Calculate age let years = today.getFullYear() - birthDate.getFullYear(); let months = today.getMonth() - birthDate.getMonth(); let days = today.getDate() - birthDate.getDate(); if (months < 0 || (months === 0 && days < 0)) { years--; months += 12; } if (days < 0) { const prevMonth = new Date(today.getFullYear(), today.getMonth() - 1, 0); days += prevMonth.getDate(); months--; } // Format the age part let extFormat = ''; if ([years, months, days].filter(Boolean).join(' ')) { extFormat = `${years} Tahun ${months} Bulan ${days} Hari`; } else { extFormat = '0'; } return { idFormat, extFormat }; }