Menu Horisontal

Minggu, 30 Desember 2012

Mencari Selisih Tanggal dan Bulan VB.Net

 Sumber : http://tidipia-comp.blogspot.com/2011/12/mencari-selisih-tanggal-dan-bulan-vbnet.html

Masih dengan tema tanggal, berikut cara untuk mencari selisih tanggal dan bulan antara data tanggal pertama dan data tanggal kedua. Tidak sulit kok, karena .Net sudah menyertakan fungsi tersebut dengan menggunakan "DateDiff" , dibawah adalah contoh penggunaanya saja :

Disini untuk data rentang tanggalnya saya gunakan contoh dengan menggunakan DateTimePicker dan nilai kembali dengan tipe data Integer.
Ok, masukan dua buah DateTimePicker ke dalam form, kemudian ubah namanya :
Untuk tanggal awal ubah menjadi "dtPicker1", dan rentang tanggal akhir-nya dtPicker2.

Menghitung selisih tanggal :
Private Function HitungTanggal() As Integer
Return DateDiff(DateInterval.Day, dtPicker1.Value.Date, dtPicker2.Value.Date)
End Function

Menghitung selisih bulan :
Private Function HitungBulan() As Integer
Return DateDiff(DateInterval.Month, dtPicker1.Value.Date, dtPicker2.Value.Date)
End Function

Jika yang dicari selisih tanggal awal atau tanggal akhirnya hari ini, ganti dtPicker1/dtPicker2 dengan Date.Now .

Nah, pada aplikasi penggajian biasanya sering membutuhkan fungsi untuk menghitung jumlah hari juga, tapi tidak termasuk hari sabtu/minggu atau mencari jumlah hari kerja. Bagaimanakah caranya ? Berikut cuplikan syntax-syntax pada fungsi tersebut :

Private Function HitungHariKerja() As Integer
Dim tmpDate = Date.Now
Dim intResult As Integer = DatePart(DateInterval.Day, DateAdd(DateInterval.Day, -1, _
DateAdd(DateInterval.Month, 1, DateAdd(DateInterval.Day, _
DatePart(DateInterval.Day, Date.Now) + 1, Date.Now))))

For i As Integer = 0 To intResult
If Weekday(tmpDate) = 1 Then 'hari minggu (1)
intResult += -1
End If

If Weekday(tmpDate) = 7 Then 'hari sabtu (7)
intResult += -1
End If

tmpDate = DateAdd(DateInterval.Day, 1, tmpDate)
Next

Return intResult
End Function

Fungsi diatas jumlah hari kerja yang dicari adalah bulan dari tanggal sekarang, syntax nya terdapat pada deklarasi pertama kali (Dim tmpDate = Date.Now). Jika anda hendak mencari jumlah hari kerja bulan berikutnya atau bulan lalu, "Date.Now" pada deklarasi "tmpDate" bisa dikombinasikan dengan fungsi "DateAdd". Misalkan anda ingin menambahkan dua bulan berikutnya dari sekarang :
Dim tmpDate = DateAdd(DateInterval.Month, 2, Date.Now)

atau dua bulan lalu dari sekarang :
Dim tmpDate = DateAdd(DateInterval.Month, -2, Date.Now)

Bagaimana penjelasan saya kira-kira? apakah mudah dimengerti? Jika ada pertanyaan, saran, kritik atau masukan (cacian dan makian tidak termasuk) silahkan tinggalkan komentar dibawah. Terima kasih sudah berkunjung, semoga bermanfaat.

7 komentar:

herublogger mengatakan...

gan salam kenal ! saya boleh nanya gak kalo menghitung tanggal dari datagridview bisa gak

herublogger mengatakan...

gan salam kenal ! saya boleh nanya gak, kalo menghitung tanggal yang ada di datagrid bisa langsung gak

sbh kota tangerang mengatakan...

gan salam kenal, mau menanyakan klo mencari tanggal lahir jika umur dan tanggal pendataan diketahui. mohon pencerahan.
misal gini gan :
Tanggal : 13 November 2013
Umur (minggu) : 8
Tanggal lahirnya :......?
Mohon bantuannya gan

AsepKuah mengatakan...

@herublogger. klo menghitung tanggal dari datagridview ya tinggal di casting saja nilai nya yang tadinya string.

Contoh2 Casting :
Dim tgl1 as Date = CDate(nilai dari grid)
Dim tgl2 as Date = CType(nilai dari grid, Date)

AsepKuah mengatakan...
Komentar ini telah dihapus oleh pengarang.
AsepKuah mengatakan...
Komentar ini telah dihapus oleh pengarang.
AsepKuah mengatakan...

@sbh kota tanggerang. Maksudnya gimana ini? Mencari tgl lahir terhitung dari tgl pendataan?

Pake fungsi DateAdd dengan interval week. Ok diketahui umur 8 minggu dari 13 November 2013. Berapakah umur bayi tsb?

Dim TglData as Date = CDate("#2013/13/11#") 'yyyy/dd/mm
Dim TglLahir as Date = DateAdd(DateInterval.Week,-8,TglData)

'tampilkan pada message
MsgBox(TglLahir.ToString("dd MMM yyyy"))