Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP


Menghitung Jumlah Hari Minggu Antara Dua Tanggal


February 27th, 2010 | by rosihanari | Cetak Artikel Cetak Artikel


GampSMS SMS Gateway

Ada salah satu pertanyaan dari salah satu pengunjung blog ini yang agak nyeleneh namun asyik bila direnungkan cara mencari solusinya. Pertanyaannya adalah: “Bagaimana cara menghitung jumlah hari minggu antara dua buah tanggal?“. Pertanyaan tersebut muncul karena yang bersangkutan ingin membuat sistem untuk mencari jumlah total denda yang dihitung harian kecuali hari minggu. Asyik bukan pertanyaannya? :-)

Anda pusing memikirkan solusinya? jangan menyerah kawan karena di dalam programming ada 1001 jalan menuju solusi yang diharapkan. Ah.. sok tahu nih yang nulis !! he … 3x. Eh.. tapi bener kok, untuk mencari solusi programming itu sebenarnya mudah, Anda sendirilah yang menganggapnya sulit. Jika image Anda terhadap programming sudah dianggap sulit, maka seterusnya akan Anda anggap sulit. Konsep pemilihan algoritma untuk mencari solusi pada suatu kasus pada prinsipnya sederhana, dan jangan memikirkan yang rumit dan terlalu muluk-muluk dulu.

OK.. Stop berteori ! sekarang saatnya praktik dan membuktikan apakah solusi kasus di atas benar-benar mudah.

Misalkan kita memiliki dua buah tanggal, katakanlah A dan B. Selanjutnya kita ingin mencari jumlah hari minggu di antara kedua tanggal tersebut. Apa ide Anda? Kalau ide saya, saya akan mengecek hari pada setiap tanggal di antara kedua tanggal. Setiap kali ditemukan hari suatu tanggal adalah hari Minggu, maka counter untuk menghitung jumlah hari minggu akan bertambah 1.

Contoh Kasus:

Misalkan kita akan menghitung jumlah hari minggu antara tanggal 01-01-2010 s/d 31-01-2010. Untuk menghitung jumlah hari minggu di antara kedua tanggal tersebut, mula-mula kita set jumlah hari Minggunya adalah 0 (karena kita belum menghitungnya). Selanjutnya kita mulai cek untuk tanggal 01-01-2010, apakah dia adalah hari Minggu? menurut kalender, tanggal tersebut adalah hari Jumat. Berarti jumlah hari Minggunya masih 0 karena belum dijumpai tanggal yang harinya Minggu. Berikutnya kita cek tanggal berikutnya yaitu 02-01-2010, apakah hari Minggu? ternyata bukan lagi. Barulah tanggal 03-01-2010 adalah hari Minggu. Berarti counter untuk hari Minggunya bertambah menjadi 1. Demikian seterusnya pengecekan ini dilakukan sampai dengan tanggal 31-01-2010. Setiap kali ditemukan tanggal dimana harinya adalah Minggu, maka counternya bertambah satu. Pada akhirnya kita akan dapatkan total jumlah hari Minggunya.

OK… demikian idenya. Selanjutnya, bagaimana implementasinya di script PHP? Implementasinya cukup mudah yaitu dengan menggunakan looping (perulangan). Permasalahan berikutnya adalah, bagaimana kita mengenerate tanggal-tanggal antara kedua tanggal, lalu mengecek hari setiap tanggal-tanggal yang dihasilkan? Inipun juga mudah, untuk mengenerate tanggal-tanggal tersebut kita gunakan function mktime(). Function ini nanti kita sisipkan di dalam loopingnya. Kapan looping ini berhenti? ya.. jika tanggal yang dihasilkan dari mktime() ini mencapai akhir tanggal yang menjadi batas kedua tanggal tersebut.

Trus.. bagaimana cara penggunaan function mktime()? OK.. ini saya kasih contohnya. Misalkan kita ingin mengenerate tanggal setelah 31-01-2010 (tanggal hari berikutnya) dengan menggunakan mktime(). Ini dia perintahnya:

<?php
echo date("d-m-Y", mktime(0, 0, 0, 1, 31+1, 2010));
?>

Bila perintah di atas dijalankan maka akan dihasilkan tanggal 01-02-2010. Perhatikan format tanggalnya yang dihasilkan oleh date("d-m-Y", mktime(...))

Sedangkan perintah di bawah ini untuk menghasilkan tanggal setelah 5 hari dari tanggal 31-01-2010.

<?php
echo date("d-m-Y", mktime(0, 0, 0, 1, 31+5, 2010));
?>

yang akan menghasilkan tanggal 05-02-2010.

Kemudian, bagaimana cara mengecek nama hari pada suatu tanggal di PHP? untuk mengecek nama hari dari suatu tanggal di PHP kita gunakan function date("w", mktime(...)). Function ini akan menghasilkan bilangan 0 s/d 6 yang merepresentasikan nama hari yaitu 0 : minggu, 1 : senin, 2 : selasa, … dst.

Ide penyelesaian sudah dapat, trus… cara mengenerate tanggal di antara dua buah tanggal serta mengetahui nama hari suatu tanggal juga sudah, so… kita bisa buat script PHP nya sekarang.

Ini dia scriptnya. Script ini akan menghitung jumlah hari Minggu antara tanggal 20-02-2010 s/d 20-04-2010, sekaligus menampilkan semua tanggalnya yang harinya Minggu.

<?php

$date1 = "20-02-2010";
$date2 = "20-04-2010";

// memecah bagian-bagian dari tanggal $date1
$pecahTgl1 = explode("-", $date1);

// membaca bagian-bagian dari $date1
$tgl1 = $pecahTgl1[0];
$bln1 = $pecahTgl1[1];
$thn1 = $pecahTgl1[2];

echo "<p>Tanggal yang merupakan hari minggu adalah:</p>";

// counter looping
$i = 0;

// counter untuk jumlah hari minggu
$sum = 0;

do
{
   // mengenerate tanggal berikutnya
   $tanggal = date("d-m-Y", mktime(0, 0, 0, $bln1, $tgl1+$i, $thn1));

   // cek jika harinya minggu, maka counter $sum bertambah satu, lalu tampilkan tanggalnya
   if (date("w", mktime(0, 0, 0, $bln1, $tgl1+$i, $thn1)) == 0)
   {
     $sum++;
     echo $tanggal."<br>";
   } 	 

   // increment untuk counter looping
   $i++;
}
while ($tanggal != $date2);   

// looping di atas akan terus dilakukan selama tanggal yang digenerate tidak sama dengan $date2.

// tampilkan jumlah hari Minggu
echo "<p>Jumlah hari minggu antara ".$date1." s/d ".$date2." adalah: ".$sum."</p>";

?>

Hasil output dari script di atas adalah sebagai berikut:

menghitung jumlah hari minggu - script PHP

OK mudah bukan membuatnya? Selamat mencoba dan semoga bermanfaat.




Share ke Facebook Share ke Twitter
Baca Juga Artikel Terkait
Mengetahui Nama Hari pada Tanggal Tertentu dengan PHP
Mencari Selisih Hari dari Dua Buah Tanggal dengan PHP (Tanpa Query SQL)
Mencari Jumlah Hari dalam Bulan Tertentu
Teknik Untuk Memecah String Menjadi Substring dengan Jumlah Karakter Sama
Function Menghitung Pangkat Bilangan dengan Pascal

Kata kunci: date function - function date php - operasi tanggal php - script php -


Ada 26 komentar dalam artikel ini.



  1. agoes says:

    mas, gimana script php untuk membaca nilai mata uang? mislnya 45.000,- muncul direportnya empat puluh lima ribu rupiah. trims..

  2. silver says:

    mas tolong buatin script php penyewaan menghitung tanggal contohnya :

    jika tanggal pinjam 02-12-2013
    tanggal kembali 10-12-2013
    bagaimana cara menghitung/menjumlahkan selisi tanggal pinjam & kembali dikalikan harga barang yang di sewa?

    trims..^^

    • rosihanari says:

      @silver: untuk menghitung selisih hari antara 2 tanggal pernah saya bahas di blog ini. Coba disearch saja, lalu hasil selisih harinya tinggal kalikan biaya sewanya.



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*