Friday, July 5, 2013

VB6 Date Time: Cara Mudah Menghitung Selisih Waktu

Menjelaskan cara mudah/termudah untuk menghitung selisih waktu - Mengapa disebut sebagai cara termudah? Karena ia hanya membutuhkan satu baris kode saja.

Untuk memahami manipulasi Date and Time seperti fungsi built-in dalam VB6 (DateAdd, DatePart, dan sebagainya) atau fungsi-fungsi date custom (bukan built-in), ada baiknya Anda mengetahui fakta mengenai data type date di bawah ini:

  1. Data type date sama seperti data type number lainnya (integer, long, double) yang ditampilkan dengan format tertentu.
  2. Bilangan 0 pada data type number (integer, long, double) padanannya dalam data type date adalah 30 December 1899, Jadi yang kurang dari tanggal 30 December 1899 menjadi bilangan negatif dan yang lebih dari 30 December 1899 akan menjadi bilangan positif.
  3. Limit bilangan negatif untuk data type date adalah: 1 January 100 (-657434) dan untuk bilangan positif: 31 December 9999 (2958465) .
  4. Date type date adalah angka 0,0000115740740740741 yang terus menerus ditambahkan atau terus menerus dikurangkan. 0,0000115740740740741 adalah 1 detik. Jadi (0,0000115740740740741 * 3600 * 24) hasilnya adalah 1. Angka 1 itu maksudnya adalah satu hari.
  5. Seluruh tanggal berada di depan koma dan seluruh jam berada di belakang koma [tanggal, jam] dan sekarang (pada saat saya menulis artikel ini) adalah tanggal/jam: 41460,9088310185
  6. Jika tidak ada tulisan 'ditampilkan dengan format tertentu' pada poin kesatu, apabila orang bertanya: "Jam berapa sekarang?" jawabannya, sekarang jam: 0,904872685185185.
  7. Dan sebagainya, dan sebagainya, dan lain sebagainya.

Dari statement di atas maka, berapa selisih waktu antara: "10:11:01" s/d "11:23:01", jawabannya adalah:

CDate ("11:23:01") - CDate ("10:11:01") hasilnya adalah: 0,049537037037037. Duh, yang benar saja Mang, jadi pusing membacanya. Ingat pada point yang kesatu 'ditampilkan dengan format tertentu' sehingga: CDate (0,049537037037037) hasilnya adalah selisih waktu yang sebenarnya. Atau:

MsgBox  CDate (CDate ("11:23:01") - CDate ("10:11:01")) 'hasilnya adalah selisih waktu yang sebenarnya atau 1:12:00.

Kesimpulannya: Untuk menghitung selisih waktu, kita bisa menggunakan fungsi: CDate (CDate (Time) - CDate (Time)), sehingga tidak harus mengkonversi jam ke detik, menit ke detik dengan bantuan fungsi Abs atau Mod kemudian dari detik dikonversi lagi ke jam, menit, dan detik. Walaupun hasinya sama, tetapi CDate (CDate (Time) - CDate (Time)) jauh lebih simple, bukankah demikian? Nah, bagaimana jika selisih waktunya ditambah hari? Contohnya: berapa selisih waktu antara 18/02/2013 s/d 25/03/2013 hmm... ingat pada point ke satu: 'seperti bilangan lainnya hanya saja ditampilkan dengan format tertentu.'

Keywords: cara, menghitung, jam, selisih, waktu, vb6, date, perbedaan, mencari, angka, time, menit, detik, bilangan