Cara Menghitung Usia di JavaScript (DOB ke Tahun, Bulan, Hari)
Pelajari cara praktis menghitung usia dari tanggal lahir dalam JavaScript. Mencakup tahun, bulan, hari yang tepat, opsi tanggal, dan kendala umum seperti zona waktu dan tahun kabisat.
Jika Anda perlu menghitung usia seseorang dari tanggal lahir (DOB) dalam JavaScript, Anda dapat melakukannya dengan beberapa cara berbeda. Kuncinya adalah menentukan apa yang Anda maksud dengan usia:
- Usia dalam tahun yang diselesaikan (paling umum)
- Usia tepatnya (tahun, bulan, hari)
- Usia pada tanggal tertentu (tidak selalu hari ini)
1) Hitung usia dalam tahun yang diselesaikan (sederhana dan benar)
Ini adalah pendekatan standar: kurangi tahun dan sesuaikan jika ulang tahun belum terjadi pada tahun ini.
fungsi ageInYears(dob, asOf = new Date()) {
const lahir = Tanggal baru(dob);
const ref = Tanggal baru(asOf);
biarkan tahun = ref.getFullYear() - kelahiran.getFullYear();
const m = ref.getMonth() - kelahiran.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < kelahiran.getDate())) {
tahun--;
}
tahun kembali;
}
Contoh: DOB 10-02-2000 dan pada 09-02-2026 menghasilkan 25 (ulang tahun besok).
2) Hitung usia pastinya (tahun, bulan, hari)
Jika ingin rincian yang tepat, Anda dapat menghitung tahun terlebih dahulu, lalu bulan, lalu hari dengan "meminjam" dari bulan sebelumnya bila diperlukan.
fungsiactAge(dob, asOf = new Date()) {
const lahir = Tanggal baru(dob);
const ref = Tanggal baru(asOf);
biarkan tahun = ref.getFullYear() - kelahiran.getFullYear();
biarkan bulan = ref.getMonth() - kelahiran.getMonth();
biarkan hari = ref.getDate() - kelahiran.getDate();
// Menyesuaikan hari dengan meminjam dari bulan sebelumnya
jika (hari < 0) {
const prevMonth = Tanggal baru(ref.getFullYear(), ref.getMonth(), 0); // hari 0 = hari terakhir bulan sebelumnya
hari += bulan sebelumnya.getDate();
bulan--;
}
// Menyesuaikan bulan dengan meminjam dari tahun sebelumnya
jika (bulan < 0) {
bulan += 12;
bertahun-tahun--;
}
return { tahun, bulan, hari };
}
Catatan: Kasus tepi tanggal bulan (seperti DOB pada tanggal 31) memerlukan pengujian yang cermat. Jika Anda memerlukan sesuatu yang tangguh di semua lokal dan kasus edge, pertimbangkan untuk menggunakan pustaka tanggal yang telah teruji dengan baik.
3) Gunakan tanggal "sejak" untuk usia di tanggal yang lalu atau yang akan datang
Banyak aplikasi memerlukan usia pada tanggal referensi tertentu (asuransi, aturan kelayakan, batas tahun ajaran). Kedua fungsi di atas menerima parameter asOf, sehingga Anda dapat melakukan:
ageInYears('20-06-1995', '01-01-2030');
tepatUmur('20-06-1995', '01-01-2030');
Permasalahan umum (dan cara menghindarinya)
- Zona waktu: penguraian
YYYY-MM-DDdapat berperilaku berbeda di seluruh lingkungan. Jika Anda hanya mementingkan tanggal, buat Tanggal dalam waktu lokal:Tanggal baru(tahun, indeks bulan, hari). - Ulang tahun hari kabisat: tentukan aturan Anda untuk tanggal 29 Februari pada tahun non-kabisat (28 Februari atau 1 Maret). Konsisten.
- Input tidak valid: memvalidasi bahwa DOB adalah tanggal sebenarnya dan bukan di masa depan.
Opsi cepat: gunakan kalkulator usia online
Jika Andahanya memerlukan jawabannya (atau Anda ingin memvalidasi penerapan Anda), gunakan kalkulator gratis kami: Hitung Usia Online.
Panduan terkait
- Cara menghitung usia di Excel
- Cara menghitung usia di Google Spreadsheet
- Jelajahi semua panduan penghitungan usia
Pertanyaan Umum
Apa cara paling akurat untuk menghitung usia?
Untuk sebagian besar kasus, "tahun yang diselesaikan" (usia dalam tahun penuh) adalah standarnya. Jika Anda memerlukan perincian lengkap, hitung tahun terlebih dahulu, lalu bulan, lalu hari, dan uji kasus tepi seperti panjang bulan dan tahun kabisat.
Mengapa JavaScript terkadang memberikan hari yang salah untuk string tanggal?
Karena Tanggal Baru('YYYY-MM-DD') dapat diartikan sebagai UTC di beberapa lingkungan. Jika Anda peduli dengan tanggal kalender lokal, parsing bagian-bagiannya dan gunakan Tanggal baru(y, m, d).