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

Sistem Cuti Online

Join the Conversation

1 Comment

Your email address will not be published. Required fields are marked *