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,-

Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

Embed Size (px)

DESCRIPTION

Script PHP Untuk Menghitung Selisih Waktu dan Tanggal, Mendapatkan Tanggal 25 hari Kedepan, Tanggal n Hari Kedepan dan Minggu Tidak Dihitung, Tanggal n Hari Kebelakang dan Minggu Tidak Dihitung, Tanggal n Hari Kedepan Hari Minggu dan Libur Nasional Tidak Dihitung, Program Hitung Jumlah Minggu, Menghitung Selisih Hari Antara 2 Tanggal, Selisih Hari Untuk Menghitung Keterlambatan, Fungsi Menghitung Keterlambatan,

Citation preview

Page 1: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

TRIK PEMROGRAMAN PHP

Script PHP UntukMenghitung Selisih Waktu

dan Tanggalwww.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,-

Page 2: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

2 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

Mendapatkan Tanggal 25 hari KedepanDengan menggunakan program PHP, kita dapat mengetahui nama hari dan tanggalyang berjalan setelah n hari kedepan atau n hari yang telah berlalu. Dengan fungsitersebut 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 depanmaupun tahun depan. Caranya adalah dengan menambahkan operasi penambahanatau 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 dapatmenggunakan 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)

Page 3: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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 yangberjalan 25 hari kemudian, perintahnya adalah:

Listing Program tgl_25harilagi.php

<?phpecho "<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 yangberjalan 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 DihitungPada latihan sebelumnya, Kita dengan mudah mendapatkan informasi tanggal yangakan berjalan pada waktu yang akan datang. Permasalahannya sekarang, bagaimanaapabila Kita tidak menghitung hari minggu sebagai hari aktif. Berikut adalah skripuntuk menyelesaikannya:

Page 4: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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 dihitungecho "<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 mingguif (date("l", $tgl)=="Sunday") {

$jum_libur++;}else {

// Apablia jumlah hari sudah memenuhi// program berhentiif ($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

Page 5: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 5

Dari contoh program di atas, Kita hendak mengetahui informasi tanggaluntuk 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 DihitungApabila pada contoh program sebelumnya berfungsi mencari informasi tanggal yangberjalan n hari kemudian, maka untuk mendapatkan informasi n hari yang telahberlalu Anda dapat mengubah nilai plus (+) menjadi minus (-) pada penambahan nilaitanggalnya. 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 dihitungecho "<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 mingguif (date("l", $tgl)=="Sunday") {

$jum_libur++;

Page 6: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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"));

# Penerapanecho "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 informasitanggal seperti gambar berikut:

Gambar Hasil Program n Hari yang Lalu

Tanggal n Hari Kedepan Hari Minggu dan Libur NasionalTidak DihitungKasus lain, bagaimana apabila selain hari minggu, program juga tidak menghitunghari libur nasional. Permasalahan ini dapat Kita selesaikan dengan cara

Page 7: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 7

mendefinisikan daftar tanggal hari libur nasional yang ada. Berikut adalah contohprogramnya:

Listing Program Tgl_nHariLagi2.php

<html><head><title>Date and Time PHP</title></head><body><?phpecho "<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 nasionalforeach ($libnas as $indeks => $tgl_libnas) {

if ($tgl_libnas== date('d-m-Y', $tgl)) {$jum_libnas++;

}}

// Hitung hari mingguif (date("l", $tgl)=="Sunday") {

$jum_minggu++;}else {

// Hitung hariif ($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>

Page 8: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

8 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

</html>

Akhir Listing

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

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

Kemudian untuk mendapatkan hari libur nasional yang terlewati, perintahpegecekannya 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 dalambulan berjalan atau tahun sekarang, maka program akan mendapatkan data tanggalyang valid. Berikut contoh hasilnya:

Gambar Hasil program n Hari kemudian

Program Hitung Jumlah MingguDari dua tanggal yang berbeda, Anda dapat mengetahui jumlah hari minggu yang adadiantaranya. Untuk dapat mengetahuinya, Anda dapat menggunakan skrip programberikut:

Listing Program Hitung_minggu.php

function JumMinggu($tgl_mulai,$tgl_akhir) {

Page 9: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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;

}

# Contohecho "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 TanggalDengan menggunakan skrip dibawah Anda dapat mengetahui jumlah hari yang adadiantara dua tanggal. Perhatikan contoh skrip berikut:

Listing Program hitung_hari.php

<?phpfunction dateDiff($dformat, $endDate, $beginDate){ $date_parts1=explode($dformat, $beginDate);

Page 10: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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";

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

Akhir Listing

Gambar Hasil menghitung hari

Selisih Hari Untuk Menghitung KeterlambatanSkrip program ini dapat Anda gunakan untuk menyelesaikan permasalahan saat Andamembuat program yang terkait dengan batas waktu, misalnya pengembalian saatmeminjam buku atau penyetoran uang saat arisan. Dengan menggunakan skripberikut, Anda dapat menghitung jumlah waktu keterlambatan dari deadline yang telahditetapkan. Berikut skripnya:

Listing Program selisih_tanggal.php

<?php$tgl_dateline = "15-04-2007";$tgl_kembali = "19-04-2007";

Page 11: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

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;

# Implementasiecho "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 dapatmenggunakan data deadline yang berasal dari database. Seandainya waktupengembalian atau penyetorannya adalah hari ini, maka pada tanggal kembali dapatmenggunakan 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

Page 12: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

12 Artikel ini diterbitkan oleh Redaksi Bunafit Komputer, Yogyakarta

Fungsi Menghitung KeterlambatanDari contoh program penghitung selisih tanggal, Anda dapat membuat paket menjadifungsi, sehingga dapat mempermudah dalam penggunaannya dalam halamanprogram.

Listing Program selisih_tanggal3.php

<?phpfunction 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

Page 13: Script PHP Untuk Menghitung Selisih Waktu dan Tanggal

Script PHP Untuk Menghitung Selisih Waktu dan Tanggal 13