Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Rabu, 15 Oktober 2014

Menghitung Umur

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
  1. 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
  2. Pada tanggal 15 Oktober 2014, umur/usia telah genap 14 Tahun
  3. Pada tanggal 16 Oktober 2014, umur/usia telah genap 14 Tahun ditambah 1 hari
Hasil output dari Function yang akan saya berikan untuk contoh diatas adalah sebagai berikut:
  1. 13 Tahun 11 Bulan 29 Hari
  2. 14 Tahun 0 Bulan 0 Hari
  3. 14 Tahun 0 Bulan 1 Hari
Hal ini juga berlaku untuk bulan-bulan sebelum/sesudah bulan lahirnya.

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!)
Berikut adalah contoh hasil outputnya:

Demikianlah pembuatan Function untuk menghitung umur versi saya yang simple ini, untuk contoh filenya dapat anda download di laman Sample.

Akhir kata, semoga artikel ini berguna untuk anda. 

Tidak ada komentar:

Posting Komentar

Silahkan berikan komentar anda.

 

Term Of Service

Untuk mengetahui tentang penggunaan blog ini, silahkan buka halaman Term Of Service atau klik TOS untuk langsung membuka halaman Term Of Service

Privacy Policy

Untuk mengetahui kebijakan privacy dalam blog ini, silahkan buka halaman Privacy Policy atau klik Disini untuk langsung membuka halaman Privacy Policy