Pengantar:
Terkadang di beberapa Sistem Informasi / Program yang Kami buat menggunakan perhitungan selisih tanggal (hari). Berikut adalah beberapa penggunaanya:- Mencari usia balita (dalam satuan hari).
- Mencari rata-rata jumlah jalan kaki setiap hari dari tanggal tertentu.
- Menampilkan n hari menuju lebaran.
- Mencari rata-rata jumlah buku dipinjam setiap harinya.
- Membandingkan omset penjualan dengan 7 hari sebelumnya, dll.
Tampilan Program Mencari Selisih antara Dua Tanggal:
![]() | |||
Gambar1. Program yang akan dibuat |
![]() |
Gambar2. Contoh tampilan penggunaan Program |
Spesifikasi Program Mencari Selisih antara Dua Tanggal:
- Tanggal dan Bulan dipiliih dengan menggunakan drop down.
- Input Tahun dengan menggunakan input text.
- Menampilkan selisih n hari dari tanggal yang diinput.
- Setelah dilakukan post, input pengisian tetap ditampilkan.
- Selisih tidak boleh minus.
Algoritma Mencari Selisih antara Dua Tanggal:
- Start.
- Masukkan tanggal awal.
- Masukkan bulan awal.
- Masukkan tahun awal.
- Masukkan tanggal akhir.
- Masukkan bulan akhir.
- Masukkan tahun akhir.
- $date_awal adalah hasil konversi ke Unix timestamp dari (Rangkai tahun awal - bulan awal - tanggal awal dengan format Y-m-d)
- $date_akhir adalah hasil konversi ke Unix timestamp dari (Rangkai tahun akhir - bulan akhir - tanggal akhir dengan format Y-m-d)
- $hasil adalah nilai absolute dari pembagian ($date_awal - $date_akhir)/60/60/24
- Tampilkan $hasil.
- Selesai.
Mari Mencari Selisih antara Dua Tanggal:
- Buatlah folder sukalogika pada direktori www anda. Pada tahap ini struktur explorer akan terlihat seperti ini: C:\wamp\www\sukalogika>.
- Buatlah folder selisih_hari pada direktori sukalogika. Pada tahap ini struktur explorer akan terlihat seperti ini: C:\wamp\www\sukalogika\selisih_hari>.
- Bukalah text editor yang akan digunakan. Misalnya: Notepad atau Notepad++.
- Ketik/Copy Paste kode berikut dan simpan dalam folder C:\wamp\www\sukalogika\selisih_hari> dengan nama index.php.
<?php // Dibuat oleh Henky Adlin Shan. // Topik: mencari selisih antara dua tanggal dengan menggunakan php. // definisikan variable hasil dengan nilai false; $hasil = false; // bila terdapat input dengan method post maka ... if (!empty($_POST)) { // rangkai tahun - bulan - dan tanggal awal kemudian konversi ke unix timestamp. // $date_awal adalah jumlah detik dari tanggal 1970-01-01 00:00:00 $date_awal = strtotime($_POST['tahun_awal'] . "-" . $_POST['bulan_awal'] . "-" . $_POST['tanggal_awal']); // rangkai tahun - bulan - dan tanggal akhir kemudian konversi ke unix timestamp. // $date_akhir adalah jumlah detik dari tanggal 1970-01-01 00:00:00 $date_akhir = strtotime($_POST['tahun_akhir'] . "-" . $_POST['bulan_akhir'] . "-" . $_POST['tanggal_akhir']); // cari nilai absolut dari selisih antara date_awal dan date_akhir. // kemudian bagi dengan 60/60/24 // 1 hari = 24 jam. // 1 jam = 60 menit. // 1 menit = 60 detik. $selisih_hari = abs(ceil($date_awal - $date_akhir) / 60 / 60 / 24); $hasil = $selisih_hari; } ?> <!DOCTYPE html> <html> <head> <title>Mencari Selisih Antara Dua Tanggal dengan PHP</title> </head> <body> <!-- Oleh Henky Adlin Shan --> <form name="selisih_hari" method="post" action="?"> <h1>Mencari Selisih Antara Dua Tanggal dengan PHP</h1> <table> <tr> <td> Tanggal Awal </td> <td> : </td> <td> <select name="tanggal_awal" id="tanggal_awal"> <optgroup label="Tanggal"> <?php // lakukan perulangan hingga 31 (maximum tanggal dalam kalendar) for ($i = 1; $i <= 31; $i++) { // konversi ke dua digit. $dua_digit = str_pad($i, 2, "0", STR_PAD_LEFT); $kata_selected = ''; // default selected bila ada $_POST. if (!empty($_POST['tanggal_awal']) && $_POST['tanggal_awal'] == $dua_digit) { $kata_selected = 'selected'; } echo '<option value="' . $dua_digit . '" ' . $kata_selected . '>' . $dua_digit . '</option>'; } ?> </optgroup> </select> <select name="bulan_awal" id="bulan_awal"> <optgroup label="Bulan"> <?php for ($i = 1; $i <= 12; $i++) { $dua_digit = str_pad($i, 2, "0", STR_PAD_LEFT); $kata_selected = ''; if (!empty($_POST['bulan_awal']) && $_POST['bulan_awal'] == $dua_digit) { $kata_selected = 'selected'; } echo '<option value="' . $dua_digit . '" ' . $kata_selected . '>' . $dua_digit . '</option>'; } ?> </optgroup> </select> <?php $tahun_awal = ""; if (!empty($_POST['tahun_awal'])) { $tahun_awal = $_POST['tahun_awal']; } ?> <input type="text" value="<?php echo $tahun_awal; ?>" placeholder="tahun" name="tahun_awal" id="tahun_awal" size=4 maxlength="4" /> </td> </tr> <tr> <td> Tanggal Akhir </td> <td> : </td> <td> <select name="tanggal_akhir" id="tanggal_akhir"> <optgroup label="Tanggal"> <?php for ($i = 1; $i <= 31; $i++) { $dua_digit = str_pad($i, 2, "0", STR_PAD_LEFT); $kata_selected = ''; if (!empty($_POST['tanggal_akhir']) && $_POST['tanggal_akhir'] == $dua_digit) { $kata_selected = 'selected'; } echo '<option value="' . $dua_digit . '" ' . $kata_selected . '>' . $dua_digit . '</option>'; } ?> </optgroup> </select> <select name="bulan_akhir" id="bulan_akhir"> <optgroup label="Bulan"> <?php for ($i = 1; $i <= 12; $i++) { $dua_digit = str_pad($i, 2, "0", STR_PAD_LEFT); $kata_selected = ''; if (!empty($_POST['bulan_akhir']) && $_POST['bulan_akhir'] == $dua_digit) { $kata_selected = 'selected'; } echo '<option value="' . $dua_digit . '" ' . $kata_selected . '>' . $dua_digit . '</option>'; } ?> </optgroup> </select> <?php $tahun_akhir = ""; if (!empty($_POST['tahun_akhir'])) { $tahun_akhir = $_POST['tahun_akhir']; } ?> <input type="text" value="<?php echo $tahun_akhir; ?>" placeholder="tahun" name="tahun_akhir" id="tahun_akhir" size=4 maxlength="4" /> </td> </tr> <?php // tampilkan jumlah selisih hari bila $hasil tidak bernilai false. // operator !== digunakan agar kita bisa menampilkan hasil bila nilai $hasil adalah 0. if ($hasil !== false) { ?> <tr> <td colspan="3"> Selisih <?php echo $hasil; ?> hari. </td> </tr> <?php } ?> </table> <input type="submit" value="cari selisih hari" /> </form> </body> </html>
- Akses dengan alamat http://localhost/sukalogika/selisih_hari/
- Selamat anda berhasil membuat program yang mampu mencari selisih antara dua tanggal dengan PHP.