Hallo! Selamat Datang di Marketplace produk digital, Freelancer terbaik di indonesia (67498 Members, 783 Products, 5291 Topic, 12956 Comments)

Menghitung selisih hari (2 tanggal) selain pada hari/tanggal libur

Dibuat
Login Terakhir 4 Bulan lalu,
Telah Dilihat 5927 Kali
DOKO_HERDIAN Mengatakan : Sultan Account
  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?

Ada 11 Jawaban

PHPMU.COM Support
commented on 08 Sep 2017 07:38:35
Salah satu jawaban terbaik,..
  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/
PHPMU.COM Support
commented on 08 Sep 2017 07:42:12
  1. Judulnya saya edit dikit ya agar jika nanti ada teman2 memiliki kasus yang sama,
  2. bisa dengan mudah menemukannya,.. :D
ilham ramadhan
commented on 28 Mei 2018 14:41:27
  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
commented on 30 Mei 2018 09:08:03
  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
commented on 07 Nov 2019 13:05:57
  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
commented on 09 Nov 2019 11:08:00
  1. Assalamualaikum,.. tambahkan ini dalam function selisih hari :
  2. if ((date("N", $tanggal) == 6)){
  3. $libur3++;
  4. }
  5.  
  6. return $selisih-$libur1-$libur2-$libur3;
Muhammad RIzkiansyah
commented on 13 Nov 2019 23:53:31
  1. coba ini:
  2.  
  3. // cuti mulai tanggal
  4. $start = "2019-11-15";
  5. // jumlah hari cuti
  6. $cuti = 3;
  7. // simpan data di sini nanti
  8. $array = [];
  9.  
  10. // dimulai dari 0 ya
  11. for ($day = 0; $day < $cuti; $day++) {
  12. // cari tanggal buat besok
  13. $nextday = date('Y-m-d', strtotime($start."+$day days"));
  14. // periksa besok itu hari apa, dan periksa apakah hari minggu ?
  15. if(!in_array(date('D', strtotime($nextday)), ['Sun'])) {
  16. // kalo bukan masukin ke array
  17. array_push($array, $nextday);
  18. } else {
  19. // kalo hari libur, tambah limit cuti (by skip tanggal libur)
  20. $cuti = $cuti + 1;
  21. }
  22. }
  23.  
  24. // test isi data yang di simpan
  25. foreach($array as $ar) {
  26. echo "$ar\n";
  27. }
  28.  
  29. bisa di test => https://implode.io/zzXjDC
Muhammad RIzkiansyah
commented on 14 Nov 2019 00:01:40
  1. tapi berdasarkan pengalaman ya,
  2.  
  3. bikin table isinya tanggal hari libur misal nya
  4. id, event, tanggal
  5. dan isi nya misalkan, "Tahun Baru" - 1 januari; "Libur di hari rabu" - 15 januari
  6.  
  7. loop tanggal nya pake rumus diatas, terus klo ketemu misalnya sama 1 januari, skip lagi atau 15 januari
  8.  
  9. karena kalo rumus nya skip hari libur biasa (sabtu/minggu) kan gak menjamin bisa ngecek hari libur yang suka berubah tahunan, misal lebaran haji, idul fitri, waisak, dll
  10.  
  11. baru deh dapetin cuti hari kerja yang skip hari libur mingguan dan hari libur nasional atau apalah
alfan amin
commented on 11 Des 2019 09:36:53
  1. Assalamualaikum,..
  2. om bukhori muslim, liburnya yang untuk libur nasional itu kan masuk di $tglLibur = Array("2013-01-04", "2013-01-05", "2013-01-17");, kalo saya ada database dg nama tabel liburnas yang isinya id, tgl_libur dan keterangan trus cara memasukkan di situ ($tglLibur = Array("2013-01-04", "2013-01-05", "2013-01-17");) gitu bagaimana? trims,,,
Muhammad RIzkiansyah
commented on 28 Des 2019 17:59:29
  1. hihihi.... udah di kasih logic nya diatas, coba kreasi dulu baru nanya... biar om bukhori nya pun seneng liat nya, belajar koding ga serta merta liat ah ini susah, terus nanya... coba kreasi dulu, ngoding itu bukan hapalan tapi kreatifitas...
ADNinc Dev
commented on 28 Des 2019 20:46:05
  1. Assalamualaikum,..
  2.  
  3. saya menerapin selisih hari pada hari libur tapi masih error pada variabel libur1 dan variabel 2
  4.  
  5.  
  6.  
  7. A PHP Error was encountered
  8. Severity: Notice
  9.  
  10. Message: Undefined variable: libur1
  11.  
  12. Filename: helpers/pegawai_helper.php
  13.  
  14. Line Number: 130
Maaf, Untuk Memberikan Komentar Anda Harus Login !!!