Tanggal Jatuh Tempo Tanpa Sabtu, Minggu Dan Hari Libur

Selamat sore teman-teman.

Setelah terakhir kali nulis blog tahun 2017, tepatnya 19 Desember 2017. Dengan judul Error Dreamwaver. Pada sore ini, saya akan mencoba berbagi ilmu yang sempat membuat saya pusing memikirkan cara yang terbaik saya bisa saya gunakan untuk program saya. Maklum tidak begitu menguasai PHP & javascript, jadi saya menggunakan script dibawah in. Karena saya tidak tahu cara mengkombinasikan rumus yang ada dengan data di database yang sudah saya gunakan. Karena keterbatasan pengetahuin tentang array di PHP . Berikut adalah contoh script untuk menentukan jatuh tempo suatu nota yang dimana perhitungan lama jatuh tempo tersebut tidak memperhitungkan hari sabtu, minggu dan hari libur nasional di indonesia. Contoh seperti berikut, 

  • Jika kita memiliki nota dengan tanggal penjualan adalah tanggal 18-07-2018.
  • Tanggal jatuh tempo adalah terhitung 10 hari dari tanggal nota penjualan yaitu tanggal 18-07-2018.
  • Sehubungan dengan tidak diperhitungkannya hari sabtu, minggu dan hari libur nasional, maka tanggal jatuh temponya adalah 01-08-2018.
dibawah ini adalah contoh scriptnya :

<?php
function addBusinessDays($date,$numDays,$holidays='')
{
    if ($holidays==='')
$holidays = 'https://www.officeholidays.com/ics/ics_country_code.php?iso=ID';

    if (!is_array($holidays)) {
        $ch = curl_init($holidays);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        $ics = curl_exec($ch);
        curl_close($ch);
        $ics = explode("\n",$ics);
        $ics = preg_grep('/^DTSTART;/',$ics);
        $holidays = preg_replace('/^DTSTART;VALUE=DATE:(\\d{4})(\\d{2})(\\d{2}).*/s','$1-$2-$3',$ics);
    }

    $addDay = 0;
    while ($numDays--) {
        while (true) {
            $addDay++;
            $newDate = date('Y-m-d', strtotime("$date +$addDay Days"));
            $newDayOfWeek = date('w', strtotime($newDate));
            if ( $newDayOfWeek>0 && $newDayOfWeek<6 && !in_array($newDate,$holidays)) break;
        }
    }

    return $newDate;
}

$startdate = '2018-07-18';
$businessdays = 10; //lama jatuh tempo dari tanggal nota penjualan

$a = addBusinessDays($startdate, $businessdays);

echo $a;
?>

Semoga dapat membuat untuk teman-teman yang membutuhkan.
Tuhan Yesus memberkati.

Comments

My Channel