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
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
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
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:
gan salam kenal ! saya boleh nanya gak kalo menghitung tanggal dari datagridview bisa gak
gan salam kenal ! saya boleh nanya gak, kalo menghitung tanggal yang ada di datagrid bisa langsung gak
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
@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)
@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"))
Posting Komentar