Kembali ke Blog
3 min read

Cara Menghitung Usia dengan Python (Contoh datetime dan dateutil)

Pelajari cara menghitung usia dari tanggal lahir dengan Python. Mencakup tahun penyelesaian, usia pada tanggal tertentu, dan kendala umum seperti tahun kabisat dan zona waktu.

Cara Menghitung Usia dengan Python (Contoh datetime dan dateutil)

Cara Menghitung Usia dengan Python (Contoh datetime dan dateutil)

Jika perlumenghitung usia dengan Pythondari tanggal lahir, hal utama yang harus dilakukan dengan benar adalah definisi usia: yang dibutuhkan sebagian besar aplikasitahun selesai(ulang tahun penuh), bukan hanya perbedaan tahun saja.

1) Tahun yang diselesaikan (definisi aman)

Ini mengembalikan jumlah tahun penuh sejak tanggal lahir (DOB). Dikurangi 1 jika ulang tahun belum terjadi pada tahun berjalan.

from datetime import date

def age_years(dob: date, as_of: date | None = None) -> int:
    if as_of is None:
        as_of = date.today()
    years = as_of.year - dob.year
    before_birthday = (as_of.month, as_of.day) < (dob.month, dob.day)
    return years - 1 if before_birthday else years

print(age_years(date(2000, 10, 5), date(2026, 2, 26)))

2) Usia pada tanggal tertentu (bukan hanya hari ini)

Banyak kasus penggunaan memerlukan tanggal "per": harga asuransi, pemeriksaan kelayakan, batas waktu sekolah, laporan. Fungsi diatas sudah mendukung melaluias_of.

3) Output gaya yang tepat (tahun dan bulan)

Jika Anda ingin keluaran seperti "25 tahun 4 bulan", gunakandateutil.relativedelta(ini menangani panjang bulan dengan benar).

from datetime import date
from dateutil.relativedelta import relativedelta

def age_ym(dob: date, as_of: date | None = None):
    if as_of is None:
        as_of = date.today()
    rd = relativedelta(as_of, dob)
    return rd.years, rd.months

print(age_ym(date(2000, 10, 5), date(2026, 2, 26)))

4) Kesalahan umum (dan cara menghindarinya)

  • Ulang tahun hari kabisat:putuskan bagaimana Anda ingin memperlakukan 29 Februari di tahun non kabisat. Banyak sistem menggunakan 28 Februari atau 1 Maret. Perilaku perpustakaan penting, jadi ujilah.
  • Tanggal dan zona waktu:untuk DOB, lebih sukadatelebihdatetime. Jika Anda harus menggunakan waktu tanggal, normalkan ke zona waktu yang sama terlebih dahulu.
  • DOB mendatang atau nilai yang hilang:memvalidasi masukan untuk menghindari usia negatif atau kerusakan.

Pemeriksaan cepat (tanpa kode)

Jika Anda hanya memerlukan satu hasil dengan cepat, gunakan kalkulator online:Hitung Usia Online.

Panduan terkait

Pertanyaan Umum

Mengapa (hari ini.tahun - dob.tahun) terkadang salah?

Karena mengabaikan apakah ulang tahunnya sudah terjadi pada tahun ini. Anda harus mengurangi 1 sebelum ulang tahun.

Haruskah saya menggunakan tanggalwaktu atau tanggal untuk tanggal lahir?

Menggunakandatebila memungkinkan. DOB adalah hari kalender, dan zona waktu dapat mengubah waktu antar hari.