Haloo! Selamat Datang di Komunitas Private Training Web Development (48385 Members, 494 Projects, 3846 Topic, 10369 Comments)

Butuh karyawan baru? atau seorang Web Developer (Part-time/Freelance/Full-time), cari disini : Members Area Jobs!
Menghitung selisih hari (2 tanggal) selain pada hari/tanggal libur
DOKO_HERDIAN Mengatakan : Members -
Rate Topic :
  1. assalamualaikum master robby..
  2. mas mau tanya nih ada tugas dari kantor untuk pembuatan program cuti..
  3. kasusnya seperti ini mas..jika karyawan cuti pada hari libur dan hari libur nasional maka tanggal tersebut harus meloncat,
  4. contoh: si A cuti 3 hari mulai dari tanggal 2..kan tanggal 3,hari minggu mas..maka liburnya tanggal 2,4,5..tanggal 3 nya gak kehitung..gimana mas?
Robby Prihandaya Mengatakan :
Admin -
  1. Assalam, mungkin ini bisa membantu :
  2.  
  3. function selisihHari($tglAwal, $tglAkhir){
  4. // list tanggal merah selain hari minggu
  5. $tglLibur = Array("2013-01-04", "2013-01-05", "2013-01-17");
  6.  
  7. // memecah string tanggal awal untuk mendapatkan
  8. // tanggal, bulan, tahun
  9. $pecah1 = explode("-", $tglAwal);
  10. $date1 = $pecah1[2];
  11. $month1 = $pecah1[1];
  12. $year1 = $pecah1[0];
  13.  
  14. // memecah string tanggal akhir untuk mendapatkan
  15. // tanggal, bulan, tahun
  16. $pecah2 = explode("-", $tglAkhir);
  17. $date2 = $pecah2[2];
  18. $month2 = $pecah2[1];
  19. $year2 = $pecah2[0];
  20.  
  21. // mencari selisih hari dari tanggal awal dan akhir
  22. $jd1 = GregorianToJD($month1, $date1, $year1);
  23. $jd2 = GregorianToJD($month2, $date2, $year2);
  24.  
  25. $selisih = $jd2 - $jd1;
  26.  
  27. // proses menghitung tanggal merah dan hari minggu
  28. // di antara tanggal awal dan akhir
  29. for($i=1; $i<=$selisih; $i++){
  30. // menentukan tanggal pada hari ke-i dari tanggal awal
  31. $tanggal = mktime(0, 0, 0, $month1, $date1+$i, $year1);
  32. $tglstr = date("Y-m-d", $tanggal);
  33.  
  34. // menghitung jumlah tanggal pada hari ke-i
  35. // yang masuk dalam daftar tanggal merah selain minggu
  36. if (in_array($tglstr, $tglLibur)){
  37. $libur1++;
  38. }
  39.  
  40. // menghitung jumlah tanggal pada hari ke-i
  41. // yang merupakan hari minggu
  42. if ((date("N", $tanggal) == 7)){
  43. $libur2++;
  44. }
  45. }
  46.  
  47. // menghitung selisih hari yang bukan tanggal merah dan hari minggu
  48. return $selisih-$libur1-$libur2;
  49. }
  50.  
  51. $tgl1 = "2013-01-01";
  52. $tgl2 = "2013-01-31";
  53.  
  54. // output -> "Selisih hari dari tanggal 2013-01-01 dan 2013-01-31 adalah: 23 hari"
  55. echo "Selisih hari dari tanggal ".$tgl1." dan ".$tgl2." adalah: ".selisihHari($tgl1, $tgl2)." hari";
  56.  
  57. Khusus untuk hari libur selain minggu harus di definisikan dulu di dalam array,
  58. karena di PHP hanya bisa mengecek hari minggu saja...
  59. #Sumber : http://blog.rosihanari.net/mencari-jumlah-selisih-hari-dari-dua-tanggal-selain-hari-minggu-dan-hari-libur/

Robby Prihandaya Mengatakan :
Admin -
  1. Judulnya saya edit dikit ya agar jika nanti ada teman2 memiliki kasus yang sama,
  2. bisa dengan mudah menemukannya,.. :D

ilham ramadhan Mengatakan :
Members -
  1. Assalam,..
  2. mas mau tanya nih saya punya tugas dimana untuk pembuatan masa sewa sama sewa aktif.
  3.  
  4. kasusnya seperti ini mas... terdapat ada 2 inputan start date dan end date, jika nanti saya pilih start date (2018-02-08) dan end date (2019-02-08),
  5. maka akan keluar berapa masa sewanya dan sampai kapan sewa aktifnya
  6. mohon di bantu mas
  7. terimakasih

Bukhori Muslim Mengatakan :
Admin -
  1. Assalam,.. berarti cuma menghitung selisih 2 tanggal saja gan, begini caranya :
  2. <?php
  3. $date1='2018-02-08';
  4. $date2='2019-02-08';
  5. $datetime1 = new DateTime($date1);
  6. $datetime2 = new DateTime($date2);
  7. $difference = $datetime1->diff($datetime2);
  8. echo $difference->days." Hari";
  9. ?>

alfan amin Mengatakan :
Members -
  1. Assalamualaikum,..
  2. mau tanya itu kan untuk tgl libur dan hari minggu saja kalo untuk tgl libur dan hari sabtu minggu gitu bagaimana???

Bukhori Muslim Mengatakan :
Admin -
  1. Assalamualaikum,.. tambahkan ini dalam function selisih hari :
  2. if ((date("N", $tanggal) == 6)){
  3. $libur3++;
  4. }
  5.  
  6. return $selisih-$libur1-$libur2-$libur3;

Maaf, Untuk Memberikan Komentar Anda Harus Login !!!