Contoh sederhana untuk menghitung jumlah hari kerja dalam rentang waktu yang telah di tentukan, disini kita hanya membuat backend, jadi kalo anda mau membuat sistem cuti online harus dibuat frontend beserta validasinya.
Disini hari kerja maksudnya adalah hari antara dua tanggal tanpa hari sabtu, minggu. Contoh kita mau mengetahui jumlah hari kerja antara 8 Agustus 2016 sampai 15 Agustus 2016
<?php // cuti.php // penanggalan Indonesia setlocale(LC_TIME, 'id_ID.UTF8'); $awal_cuti = '8-08-2016'; $akhir_cuti = '15-08-2016'; // tanggalnya diubah formatnya ke Y-m-d $awal_cuti = date_create_from_format('d-m-Y', $awal_cuti); $awal_cuti = date_format($awal_cuti, 'Y-m-d'); $awal_cuti = strtotime($awal_cuti); $akhir_cuti = date_create_from_format('d-m-Y', $akhir_cuti); $akhir_cuti = date_format($akhir_cuti, 'Y-m-d'); $akhir_cuti = strtotime($akhir_cuti); $haricuti = array(); $sabtuminggu = array(); for ($i=$awal_cuti; $i <= $akhir_cuti; $i += (60 * 60 * 24)) { if (date('w', $i) !== '0' && date('w', $i) !== '6') { $haricuti[] = $i; } else { $sabtuminggu[] = $i; } } $jumlah_cuti = count($haricuti); $jumlah_sabtuminggu = count($sabtuminggu); $abtotal = $jumlah_cuti + $jumlah_sabtuminggu; echo "<pre>"; echo "<h1>Sistem Cuti Online</h1>"; echo "<hr>"; echo "Mulai Cuti : " . date('d-m-Y', $awal_cuti) . "<br>"; echo "Terakhir Cuti : " . date('d-m-Y', $akhir_cuti) . "<br>"; echo "Jumlah Hari Cuti : " . $jumlah_cuti ."<br>"; echo "Jumlah Sabtu/Minggu : " . $jumlah_sabtuminggu ."<br>"; echo "Total Hari : " . $abtotal ."<br>"; echo "<h1>Hari Kerja</h1>"; echo "<hr>"; foreach ($haricuti as $value) { echo date('d-m-Y', $value) . " -> " . strftime("%A, %d %B %Y", date($value)) . "\n" . "<br>"; } echo "<h1>Sabtu Minggu</h1>"; echo "<hr>"; foreach ($sabtuminggu as $value) { echo date('d-m-Y', $value) . " -> " . strftime("%A, %d %B %Y", date($value)) . "\n" . "<br>"; }
Tampilan script diatas
Sistem Cuti Online Mulai Cuti : 08-08-2016 Terakhir Cuti : 15-08-2016 Jumlah Hari Cuti : 6 Jumlah Sabtu/Minggu : 2 Total Hari : 8 Hari Kerja 08-08-2016 -> Senin, 08 Agustus 2016 09-08-2016 -> Selasa, 09 Agustus 2016 10-08-2016 -> Rabu, 10 Agustus 2016 11-08-2016 -> Kamis, 11 Agustus 2016 12-08-2016 -> Jumat, 12 Agustus 2016 15-08-2016 -> Senin, 15 Agustus 2016 Sabtu Minggu 13-08-2016 -> Sabtu, 13 Agustus 2016 14-08-2016 -> Minggu, 14 Agustus 2016
makasii:)