Pada Tutorial kali ini, Teman-Teman akan belajar mengenai bagaimana mencari selisih antara dua tanggal dengan menggunakan PHP.
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.
Oleh karena sering digunakan, fungsi ini menarik untuk dipahami.
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.
Tidak ada komentar:
Posting Komentar