commitbcfb4c1456Merge:1cbde57975c87dAuthor: Munawwirul Jamal <57973347+munaja@users.noreply.github.com> Date: Mon Nov 17 11:15:14 2025 +0700 Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135 Feat: Integration Rehab Medik - Surat Kontrol commit975c87d99aMerge:f5820901cbde57Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 10:58:10 2025 +0700 Merge branch 'dev' into feat/surat-kontrol-135 commitf582090d18Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 13 11:56:21 2025 +0700 Fix: Refactor surat kontrol commita14c4a5d3cAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 11 14:21:58 2025 +0700 Fix: Refactor Surat Kontrol CRUD {id} to {code} commit24313adef6Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Fri Nov 7 10:35:46 2025 +0700 Fix: debug back btn in add, edit, detail content page commit59b44b5729Merge:99a61a0db15ec9Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Fri Nov 7 09:11:10 2025 +0700 Merge branch 'dev' into feat/surat-kontrol-135 commit99a61a0bf2Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 6 08:06:01 2025 +0700 Feat: add right & bottom label in input base component commitdb48919325Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 5 13:53:43 2025 +0700 Feat: add banner in List if requirement not met commitbd57250f7eAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 5 13:26:48 2025 +0700 Fix: refactor getDetail url param commita361922e32Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 5 13:19:07 2025 +0700 Feat: Add & integrate add, edit, detail page commit331f4a6b20Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 16:56:08 2025 +0700 Feat: Integrate Control Letter commit2275f4dc99Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Oct 27 14:01:58 2025 +0700 Feat: add UI BPJS > Surat Kontrol commit89e0e7a2c8Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Oct 27 10:21:59 2025 +0700 Feat: add UI CRUD Surat Kontrol at Rehab Medik > kunjungan > Proses
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
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
|
|
};
|
|
}
|
|
|
|
export function formatDateYyyyMmDd(isoDateString: string): string {
|
|
const date = new Date(isoDateString);
|
|
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}`;
|
|
} |