You are on page 1of 13

TRIK PEMROGRAMAN PHP

Script PHP Untuk
Menghitung Selisih Waktu
dan Tanggal
www.bunafit-komputer.com
www.planetKode.Com

Koleksi Buku dari Penerbit GAVAMEDIA, Yogyakarta
Penulis : Bunafit Nugroho, dan Indah Indriyanna

Harga: Rp. 57.500,- Harga: Rp. 65.500,- Harga: Rp. 36.500,- Harga: Rp. 67.500,-

Harga: Rp. 66.500,- Harga: Rp. 49.500,- Harga: Rp. 49.500,- Harga: Rp. 33.500,-
2 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

Mendapatkan Tanggal 25 hari Kedepan
Dengan menggunakan program PHP, kita dapat mengetahui nama hari dan tanggal
yang berjalan setelah n hari kedepan atau n hari yang telah berlalu. Dengan fungsi
tersebut Kita juga dapat mengetahui secara lengkap informasi jam yang berjalan.
Fungsi yang dapat digunakan adalah mktime(), berikut adalah sintaks dasarnya:

SINTAKS :
mktime ( [int hour [, int minute [, int second [,
int month [, int day [, int year [,
int is_dst]]]]]]] )

Dengan fungsi di atas, Anda dapat mengetahui tanggal pada hari besok, bulan depan
maupun tahun depan. Caranya adalah dengan menambahkan operasi penambahan
atau pengurangan pada data tanggal, bulan atau tahun. Berikut adalah contohnya:
Hari Kemaren :
mktime(0,0,0, date("m"), date("d")-1, date("Y"));

Hari Depan :
mktime(0,0,0, date("m"), date("d")+1, date("Y"));

Bulan Lalu :
mktime(0,0,0, date("m")-1, date("d"), date("Y"));

Bulan Depan :
mktime(0,0,0, date("m")+1, date("d"), date("Y"));
Tahun Lalu :
mktime(0,0,0, date("m"), date("d"), date("Y")-1);

Tahun Depan :
mktime(0,0,0, date("m"), date("d"), date("Y")+1);

Dari perintah di atas, apabila Anda menggunakan MySQL, maka Anda juga dapat
menggunakan perintah DATE_ADD() seperti yang telah dibahas pada bab terdahulu.
Berikut contohnya:
mysql> SELECT DATE_ADD(CURDATE(), INTERVAL 25 DAY)
-> AS 25harilagi;
+------------+
| 25harilagi |
+------------+
| 2007-05-10 |
+------------+
1 row in set (0.66 sec)
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 3

mysql> SELECT DATE_FORMAT(DATE_ADD(CURDATE(),
-> INTERVAL 25 DAY),
-> '%W %d-%m-%Y') AS 25harilagi;
+---------------------+
| 25harilagi |
+---------------------+
| Thursday 10-05-2007 |
+---------------------+
1 row in set (0.67 sec)

Dari gambaran di atas, maka apabila hendak mendapatkan waktu dan tanggal yang
berjalan 25 hari kemudian, perintahnya adalah:

Listing Program tgl_25harilagi.php

<?php
echo "<b>PROGRAM LIAT HARI 25 HARI LAGI</b>";
$next25day = mktime(0,0,0,date("n"),date("j")+25,date("Y"));
echo "<br>Lihat Hari :". date("l", $next25day);
echo "<br>Lihat Tanggal :". date("d-m-Y", $next25day);
?>

Akhir Listing

Dari skrip program di atas, apabila ingin mendapatkan tanggal maupun hari yang
berjalan beberapa hari yang lalu, maka nilainya dapat menggunakan tanda minus (-
25). Berikut hasilnya:

Gambar Mendapatkan tanggal 25 hari kedepan

Tanggal n Hari Kedepan dan Minggu Tidak Dihitung
Pada latihan sebelumnya, Kita dengan mudah mendapatkan informasi tanggal yang
akan berjalan pada waktu yang akan datang. Permasalahannya sekarang, bagaimana
apabila Kita tidak menghitung hari minggu sebagai hari aktif. Berikut adalah skrip
untuk menyelesaikannya:
4 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

Listing Program Tgl_nHariLagi.php

<html>
<head>
<title>Date and Time PHP</title>
</head>
<body>
<?php
// Mengetahui Tgl n Hari kedepan, dan
// hari minggu tidak dihitung
echo "<b>PROGRAM LIAT HARI 10 HARI LAGI</b><br>";
echo "<b>Hari (minggu) tidak dihitung</b><br>";
echo "Tanggal sekarang :".date('l d-m-Y')."<br>";

$hari = 10;
$waktu = $hari * 2;

for ($i=0; $i <= $waktu; $i++) {
$tgl =mktime(0,0,0,date("n"),date("j")+ $i,date("Y"));
// Mengecek hari minggu
if (date("l", $tgl)=="Sunday") {
$jum_libur++;
}
else {
// Apablia jumlah hari sudah memenuhi
// program berhenti
if ($jum_hari==$hari) {
break;
}
else {
$jum_hari++;
}
}
}

$jumhari = $jum_hari + $jum_libur;
$nextday = mktime(0,0,0,date("n"),date("j")+
$jumhari,date("Y"));
echo "Tanggal Untuk $hari hari kedepan = ".
date('l d-m-Y', $nextday);
?>
</body>
</html>

Akhir Listing
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 5

Dari contoh program di atas, Kita hendak mengetahui informasi tanggal
untuk 10 hari kedepan, akan tetapi hari minggu tidak terhitung didalamnya,
atau hari minggu dilompati. Hasil dari contoh program di atas adalah:

Gambar Hasil program n Hari kemudian

Tanggal n Hari Kebelakang dan Minggu Tidak Dihitung
Apabila pada contoh program sebelumnya berfungsi mencari informasi tanggal yang
berjalan n hari kemudian, maka untuk mendapatkan informasi n hari yang telah
berlalu Anda dapat mengubah nilai plus (+) menjadi minus (-) pada penambahan nilai
tanggalnya. Berikut adalah contohnya:

Listing Program Tgl_nHariLalu.php

<html>
<head>
<title>Date and Time PHP</title>
</head>
<body>
<?php
// Mengetahui Tgl n Hari kebelakang, dan
// hari minggu tidak dihitung
echo "<b>PROGRAM LIAT HARI 10 HARI LALU</b><br>";
echo "<b>Hari (minggu) tidak dihitung</b><br>";
echo "Tanggal sekarang :".date('l d-m-Y')."<br>";

$hari = 10;
$waktu = $hari * 2;

for ($i=0; $i <= $waktu; $i++) {
// 1 Hari kemudian
$tgl =mktime(0,0,0,date("n"),date("j")-$i,date("Y"));
// Memeriksa hari minggu
if (date("l", $tgl)=="Sunday") {
$jum_libur++;
6 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

}
else {
if ($jum_hari==$hari) {
break;
}
else {
// Penambahan hari
$jum_hari++;
}
}
}

$jumhari = $jum_hari + $jum_libur;
$nextday = mktime(0,0,0,date("n"),date("j")-$jumhari,
date("Y"));

# Penerapan
echo "Tanggal Untuk $hari hari kebelakang = ".
date('l d-m-Y', $nextday);
?>
</body>
</html>

Akhir Listing

Dari contoh program di atas, apabila dijalankan Anda akan mendapatkan informasi
tanggal seperti gambar berikut:

Gambar Hasil Program n Hari yang Lalu

Tanggal n Hari Kedepan Hari Minggu dan Libur Nasional
Tidak Dihitung
Kasus lain, bagaimana apabila selain hari minggu, program juga tidak menghitung
hari libur nasional. Permasalahan ini dapat Kita selesaikan dengan cara
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 7

mendefinisikan daftar tanggal hari libur nasional yang ada. Berikut adalah contoh
programnya:
Listing Program Tgl_nHariLagi2.php

<html>
<head>
<title>Date and Time PHP</title>
</head>
<body>
<?php
echo "<b>PROGRAM LIAT HARI n HARI LAGI</b><br>";
echo "<b>Hari Libur (minggu,Lib Nas) tidak dihitung</b><br>";
$hari = 10;
$waktu = $hari * 2;
$libnas= array("24-04-2007","01-05-2007");

for ($i=0; $i <= $waktu; $i++) {
$tgl =mktime(0,0,0,date("n"),date("j")+ $i,date("Y"));
// Cek hari libur nasional
foreach ($libnas as $indeks => $tgl_libnas) {
if ($tgl_libnas== date('d-m-Y', $tgl)) {
$jum_libnas++;
}
}

// Hitung hari minggu
if (date("l", $tgl)=="Sunday") {
$jum_minggu++;
}
else {
// Hitung hari
if ($jum_hari==$hari) {
break;
}
else {
$jum_hari++;
}
}
}

$jumhari = $jum_hari + $jum_libnas + $jum_minggu;
$nextday = mktime(0,0,0,date("n"),date("j")+
$jumhari,date("Y"));
echo "Tanggal Untuk $hari hari kedepan = ".
date('l d-m-Y', $nextday);
?>
</body>
8 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

</html>

Akhir Listing

Dari contoh program di atas, sebaiknya Anda mendefinisikan daftar tanggal yang
menjadi libur nasional ke dalam data array, berikut contohnya:

$libnas= array("24-04-2007","01-05-2007");

Kemudian untuk mendapatkan hari libur nasional yang terlewati, perintah
pegecekannya adalah:
$tgl =mktime(0,0,0,date("n"),date("j")+ $i,date("Y"));
foreach ($libnas as $indeks => $tgl_libnas) {
if ($tgl_libnas== date('d-m-Y', $tgl)) {
$jum_libnas++;
}
}

Jadi, dengan cara mendefinisikan semua daftar hari libur nasional yang ada dalam
bulan berjalan atau tahun sekarang, maka program akan mendapatkan data tanggal
yang valid. Berikut contoh hasilnya:

Gambar Hasil program n Hari kemudian

Program Hitung Jumlah Minggu
Dari dua tanggal yang berbeda, Anda dapat mengetahui jumlah hari minggu yang ada
diantaranya. Untuk dapat mengetahuinya, Anda dapat menggunakan skrip program
berikut:

Listing Program Hitung_minggu.php

function JumMinggu($tgl_mulai,$tgl_akhir) {
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 9

$adaysec =24*3600;
$tgla= strtotime($tgl_mulai);
$tglb= strtotime($tgl_akhir);

$minggu=0;
for ($i=$tgla; $i < $tglb; $i+=$adaysec){
if (date("w",$i) =="0") {
$minggu++;
}
}
return $minggu;
}

# Contoh
echo "Rentang waktu '2007-03-01' sampai '2007-04-17'
<br>";
echo "Jum Minggu : ".JumMinggu('2007-03-01','2007-04-
17');

Akhir Listing

Gambar Hasil menghitung hari minggu

Menghitung Selisih Hari Antara 2 Tanggal
Dengan menggunakan skrip dibawah Anda dapat mengetahui jumlah hari yang ada
diantara dua tanggal. Perhatikan contoh skrip berikut:

Listing Program hitung_hari.php

<?php
function dateDiff($dformat, $endDate, $beginDate){
$date_parts1=explode($dformat, $beginDate);
10 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

$date_parts2=explode($dformat, $endDate);

$start_date =gregoriantojd($date_parts1[1],
$date_parts1[0], $date_parts1[2]);
$end_date =gregoriantojd($date_parts2[1],
$date_parts2[0], $date_parts2[2]);

return $end_date - $start_date;
}

# Penerpan dd-mm-yyyy
$date1="07/04/2007";
$date2="15/04/2007";

# Pemakaian
echo "Rentang waktu '$date1' sampai '$date2' <br>";
echo "Jum Hari : ". dateDiff("/", $date2, $date1);
?>

Akhir Listing

Gambar Hasil menghitung hari

Selisih Hari Untuk Menghitung Keterlambatan
Skrip program ini dapat Anda gunakan untuk menyelesaikan permasalahan saat Anda
membuat program yang terkait dengan batas waktu, misalnya pengembalian saat
meminjam buku atau penyetoran uang saat arisan. Dengan menggunakan skrip
berikut, Anda dapat menghitung jumlah waktu keterlambatan dari deadline yang telah
ditetapkan. Berikut skripnya:

Listing Program selisih_tanggal.php

<?php
$tgl_dateline = "15-04-2007";
$tgl_kembali = "19-04-2007";
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 11

// Mengurai tanggal detline
$tgl_dateline_pcs = explode ("-", $tgl_dateline);
$tgl_dateline_pcs = $tgl_dateline_pcs[2]."-".
$tgl_dateline_pcs[1]."-".$tgl_dateline_pcs[0];

// Mengurai tanggal kembali
$tgl_kembali_pcs = explode ("-", $tgl_kembali);
$tgl_kembali_pcs = $tgl_kembali_pcs[2]."-".
$tgl_kembali_pcs[1]."-".$tgl_kembali_pcs[0];

$selisih = strtotime ($tgl_kembali_pcs) –
strtotime ($tgl_dateline_pcs);

$selisih = $selisih / 86400;

# Implementasi
echo "Detline : $tgl_dateline, pengembalian : $tgl_kembali";
echo "<br>Terlambat ".floor ($selisih)." hari.";
?>

Akhir Listing

Dari contoh program di atas, untuk implementasi ke dalam program Anda dapat
menggunakan data deadline yang berasal dari database. Seandainya waktu
pengembalian atau penyetorannya adalah hari ini, maka pada tanggal kembali dapat
menggunakan waktu sekarang. Berikut contohnya:

$tgl_dateline = "15-04-2007";
$tgl_kembali = date('d-m-Y');

Hasil dari contoh program di atas adalah:

Gambar Mendapatkan waktu keterlambatan
12 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

Fungsi Menghitung Keterlambatan
Dari contoh program penghitung selisih tanggal, Anda dapat membuat paket menjadi
fungsi, sehingga dapat mempermudah dalam penggunaannya dalam halaman
program.

Listing Program selisih_tanggal3.php

<?php
function SelisihTgl($tgl_dateline, $tgl_kembali) {
// Mendapatkan tanggal detline
$tgl_dateline_pcs = explode ("-", $tgl_dateline);
$tgl_dateline_pcs = $tgl_dateline_pcs[2]."-".
$tgl_dateline_pcs[1]."-".$tgl_dateline_pcs[0];

// Mendapatkan tanggal kembali/transaksi
$tgl_kembali_pcs = explode ("-", $tgl_kembali);
$tgl_kembali_pcs = $tgl_kembali_pcs[2]."- ".
$tgl_kembali_pcs[1]."-".$tgl_kembali_pcs[0];

// Menghitung selisih
$selisih = strtotime ($tgl_kembali_pcs) –
strtotime ($tgl_dateline_pcs);

// Pembulatan selisih kedalam tanggal
$selisih = $selisih / 86400;
if ($selisih >=1) {
$hasil = floor($selisih);
}
else {
$hasil = 0;
}
return $hasil;
}

# Penerpan
$tgl_dateline = "30-12-2006";
$tgl_kembali = "05-01-2006";

echo "Terlambat ".SelisihTgl($tgl_dateline,$tgl_kembali).
" hari.";
?>

Akhir Listing

oooOooo
Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 13