Membuat Function Untuk Menghitung Umur
Kali ini saya akan memberikan sebuah Function yang dapat digunakan untuk
menghitung umur/usia seseorang secara detail (tahun, bulan dan harinya), selain
untuk menghitung umur/usia, Function ini juga dapat diterapkan untuk menghitung selisih
waktu diantara dua tanggal (tanggal dalam argument dan tanggal dalam system
komputer).
Anda tidak perlu khawatir, karena dalam Function yang akan saya berikan ini
akan menggunakan Function-Function standar yang saya yakin anda telah
mengetahuinya, disini mungkin yang lebih berperan adalah logikanya, karena
untuk menghitung umur/usia, butuh sedikit pemikiran yang lebih dalam, agar
hasil yang didapatkan sesuai dengan hitungan yang sebenarnya (versi saya tentunya).
Sebelum saya mulai, sebagai gambaran, ada baiknya saya berikan konsep dari Function ini, yaitu sebagai berikut:
Misalnya tanggal lahir adalah 15 Oktober 2000
- Pada tanggal 14 Oktober 2014, umur/usia belum genap 14 tahun, karena masih kurang 1 hari lagi, yang berarti umur/usia adalah 13 tahun 11 bulan pada tanggal 15 September 2014, ditambah selisih hari antara tanggal 15 September 2014 dan 14 Oktober 2014 sebanyak 29 hari
- Pada tanggal 15 Oktober 2014, umur/usia telah genap 14 Tahun
- Pada tanggal 16 Oktober 2014, umur/usia telah genap 14 Tahun ditambah 1 hari
- 13 Tahun 11 Bulan 29 Hari
- 14 Tahun 0 Bulan 0 Hari
- 14 Tahun 0 Bulan 1 Hari
Dari contoh diatas, jika tanggal lahirnya belum tercapai, maka akan ada jumlah
hari yang ditambahkan, jumlah hari tersebut bisa kita dapatkan dengan cara kita
harus terlebih dahulu mengetahui jumlah hari dalam bulan sebelumnya, jumlah
hari ini kita butuhkan agar kita bisa membuat tanggal sesuai dengan tanggal
lahir namun dibulan sebelumnya, hal ini untuk mengantisipasi jika tanggal lahir
lebih besar dari tanggal terakhir dibulan sebelumnya, misalnya tanggal lahir
adalah 31 Maret, kita tahu jika tanggal terakhir dibulan sebelumnya(dalam hal
ini Pebruari) maksimal adalah 29 (jika tahun kabisat, jika bukan tahun kabisat
maka tanggal terakhir dari bulan Pebruari adalah 28).
Sedangkan jika tanggal lahirnya telah lewat, maka kita tinggal menghitung
jumlah harinya saja.
Sekarang kita lanjut ke pembuatan function, sesuai judul artikel ini yaitu Function menghitung umur, berikut adalah langkah-langkahnya:
Buat dahulu Function untuk menghitung jumlah hari dibulan sebelumnya atau
bisa juga disebut sebagai Function untuk mengetahui tanggal terakhir dari bulan
sebelumnya, berikut adalah langkah-langkahnya:
Dalam workspace anda, buat sebuah Function baru dengan struktur sebagai
berikut:
Property
|
Keterangan
|
Access
|
Public
|
Return Type
|
Integer
|
Function Name
|
f_jumlah_hari_bulan_lalu
|
Pass By
|
Value
|
Argument Type
|
Date
|
Argument Name
|
ad_tanggal_sekarang
|
Pada painter code, masukkan script berikut ini:
// Kegunaan: untuk mendapatkan jumlah
hari/tanggal terakhir dibulan sebelumnya
Integer fi_bulan, fi_tahun
Date fd_tanggal_terakhir
fi_bulan = Month(ad_tanggal_sekarang)
fi_tahun = Year(ad_tanggal_sekarang)
fd_tanggal_terakhir =
RelativeDate(Date(fi_tahun, fi_bulan, 1), -1)
Return Day(fd_tanggal_terakhir)
Simpan Function
tersebut.
Langkah selanjutnya
adalah pembuatan Function untuk menghitung umur, berikut langkah-langkahnya:
Buat Function baru
dengan struktur sebagai berikut:
Property
|
Keterangan
|
Access
|
Public
|
Return Type
|
String
|
Function Name
|
f_detail_umur
|
Pass By
|
Value
|
Argument Type
|
Date
|
Argument Name
|
ad_tanggal_lahir
|
Pada jendela code
painter, masukkan script kode berikut ini:
String fs_ret
Integer fi_tahun_lahir, fi_tahun_sekarang, fi_bulan_lahir,
fi_bulan_sekarang, fi_tanggal_lahir, fi_tanggal_sekarang
Integer fi_selisih_tahun, fi_selisih_bulan, fi_selisih_hari,
fi_jumlah_hari
Date fd_tanggal_lahir_bulan_lalu
SetNull(fs_ret) // set null untuk return-nya
// cek argument, null atau tidak
IF IsNull(ad_tanggal_lahir) THEN Return fs_ret
// Cek tanggal lahir melewati tanggal sekarang atau tidak
IF ad_tanggal_lahir > Today() THEN Return "Belum
Lahir"
// Ambil Tahun, Bulan dan Tanggal dari tanggal lahir
fi_tahun_lahir = Year(ad_tanggal_lahir)
fi_bulan_lahir = Month(ad_tanggal_lahir)
fi_tanggal_lahir = Day(ad_tanggal_lahir)
// Ambil Tahun, Bulan dan Tanggal dari tanggal sekrang
fi_tahun_sekarang = Year(Today())
fi_bulan_sekarang = Month(Today())
fi_tanggal_sekarang = Day(Today())
// Set nilai dengan asumsi tanggal dan bulan sekarang adalah
tanggal dan bulan lahirnya
fi_selisih_tahun = fi_tahun_sekarang - fi_tahun_lahir
fi_selisih_bulan = 0
fi_selisih_hari = 0
// kode berikut akan dieksekusi jika tanggal sekarang
umur/usia belum genap atau sudah lewat tanggal, bulan dan tahunnya
IF fi_bulan_lahir = fi_bulan_sekarang THEN // bulannya sama
IF fi_tanggal_lahir >
fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
fi_jumlah_hari
= f_jumlah_hari_bulan_lalu (Today())
fi_selisih_bulan
= 11
fd_tanggal_lahir_bulan_lalu =
RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0 -
fi_jumlah_hari)
fi_selisih_hari
= DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
fi_selisih_tahun
= (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSEIF fi_tanggal_lahir <
fi_tanggal_sekarang THEN // tanggal lahir sudah lewat
fi_selisih_hari
= fi_tanggal_sekarang - fi_tanggal_lahir
fi_selisih_bulan
= 0
fi_selisih_tahun
= fi_tahun_sekarang - fi_tahun_lahir
END IF
ELSEIF fi_bulan_lahir > fi_bulan_sekarang THEN // bulan
lahir belum waktunya
IF fi_tanggal_lahir =
fi_tanggal_sekarang THEN // tanggal lahirnya sama dengan tanggal sekarang
fi_selisih_hari
= 0
fi_selisih_bulan
= 12 - (fi_bulan_lahir - fi_bulan_sekarang)
fi_selisih_tahun
= (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSEIF fi_tanggal_lahir >
fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
fi_jumlah_hari
= f_jumlah_hari_bulan_lalu(Today())
fi_selisih_bulan
= 12 - (fi_bulan_lahir - fi_bulan_sekarang) - 1
fd_tanggal_lahir_bulan_lalu
= RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0
- fi_jumlah_hari)
fi_selisih_hari
= DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
fi_selisih_tahun
= (fi_tahun_sekarang - fi_tahun_lahir) - 1
ELSE // tanggal lahir sudah lewat
fi_selisih_hari
= fi_tanggal_sekarang - fi_tanggal_lahir
fi_selisih_bulan
= 12 - (fi_bulan_lahir - fi_bulan_sekarang)
fi_selisih_tahun
= fi_tahun_sekarang - fi_tahun_lahir - 1
END IF
ELSEIF fi_bulan_lahir < fi_bulan_sekarang THEN // bulan
lahir sudah lewat
IF fi_tanggal_lahir =
fi_tanggal_sekarang THEN // tanggal lahir sama dengan tanggal sekarang
fi_selisih_hari
= 0
fi_selisih_bulan
= fi_bulan_sekarang - fi_bulan_lahir
fi_selisih_tahun
= fi_tahun_sekarang - fi_tahun_lahir
ELSEIF fi_tanggal_lahir >
fi_tanggal_sekarang THEN // tanggal lahir belum waktunya
fi_jumlah_hari
= f_jumlah_hari_bulan_lalu(Today())
fi_selisih_bulan
= fi_bulan_sekarang - fi_bulan_lahir - 1
fd_tanggal_lahir_bulan_lalu
= RelativeDate(Date(fi_tahun_sekarang, fi_bulan_sekarang, fi_tanggal_lahir), 0
- fi_jumlah_hari)
fi_selisih_hari
= DaysAfter(fd_tanggal_lahir_bulan_lalu, Today())
fi_selisih_tahun
= fi_tahun_sekarang - fi_tahun_lahir
ELSE // tanggal lahir sudah lewat
fi_selisih_hari
= fi_tanggal_sekarang - fi_tanggal_lahir
fi_selisih_bulan
= fi_bulan_sekarang - fi_bulan_lahir
fi_selisih_tahun
= fi_tahun_sekarang - fi_tahun_lahir
END IF
END IF
// buat string untuk hasilnya
fs_ret = String(fi_selisih_tahun) + " Tahun " +
String(fi_selisih_bulan) + " Bulan " + String(fi_selisih_hari) +
" Hari"
Return fs_ret
Simpan Function
tersebut.
Untuk memanggil
Function tersebut, kita tinggal memasukkan argument dengan tipe data date,
misalnya:
Date ld_lahir
String ls_msg
em_1.GetData(ld_lahir)
ls_msg = "Untuk Tanggal Lahir " + String(ld_birth, "dd mmmm yyyy") + " detail umur pada~n"
ls_msg = ls_msg + "tanggal " + String(Today(), "dd mmmm yyyy") + " adalah sebagai berikut:~n~n"
ls_msg = ls_msg + f_detail_umur(ld_birth, lb_1.SelectedIndex())
MessageBox("Function Detail Umur", ls_msg, Information!)
ls_msg = ls_msg + "tanggal " + String(Today(), "dd mmmm yyyy") + " adalah sebagai berikut:~n~n"
ls_msg = ls_msg + f_detail_umur(ld_birth, lb_1.SelectedIndex())
MessageBox("Function Detail Umur", ls_msg, Information!)
Demikianlah pembuatan
Function untuk menghitung umur versi saya yang simple ini, untuk contoh filenya dapat
anda download di laman Sample.
Tidak ada komentar:
Posting Komentar
Silahkan berikan komentar anda.