Skip to content

Instantly share code, notes, and snippets.

@Loetfi
Last active February 20, 2019 09:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Loetfi/8c650ee7dbcec216f9e5e3a424a01d5f to your computer and use it in GitHub Desktop.
Save Loetfi/8c650ee7dbcec216f9e5e3a424a01d5f to your computer and use it in GitHub Desktop.
monggo di liat mas
<?php
function selisihHari($tglAwal, $tglAkhir){
// list tanggal merah selain hari minggu
$tglLibur = array(
"2019-02-02",
"2019-02-03",
"2019-02-05",
"2019-02-07",
"2019-02-09",
"2019-02-10"
);
$pecah1 = explode("-", $tglAwal);
$date1 = $pecah1[2];
$month1 = $pecah1[1];
$year1 = $pecah1[0];
// memecah string tanggal akhir untuk mendapatkan
// tanggal, bulan, tahun
$pecah2 = explode("-", $tglAkhir);
$date2 = $pecah2[2];
$month2 = $pecah2[1];
$year2 = $pecah2[0];
// mencari selisih hari dari tanggal awal dan akhir
$jd1 = GregorianToJD($month1, $date1, $year1);
$jd2 = GregorianToJD($month2, $date2, $year2);
$selisih = $jd2 - $jd1;
// proses menghitung tanggal merah dan hari minggu
// di antara tanggal awal dan akhir
for($i=1; $i<=$selisih; $i++){
// menentukan tanggal pada hari ke-i dari tanggal awal
$tanggal = mktime(0, 0, 0, $month1, $date1+$i, $year1);
$tglstr = date("Y-m-d", $tanggal);
// menghitung jumlah tanggal pada hari ke-i
// yang masuk dalam daftar tanggal merah selain minggu
if (in_array($tglstr, $tglLibur)){
$libur1++;
}
// menghitung jumlah tanggal pada hari ke-i
// yang merupakan hari minggu
if ((date("N", $tanggal) == 7)){
$libur2++;
}
}
// menghitung selisih hari yang bukan tanggal merah dan hari minggu
return $selisih-$libur1-$libur2;
}
// ganti dibawah ini kalo bukan lebih dari 5 hari
$lama_cuti1 = 5; // Dalam hari
$tgl_awal = "2019-02-01"; // tanggal awal cuti
// end
$tgl_selesai_dengan_libur = date('Y-m-d', strtotime('+'.$lama_cuti1.' days', strtotime($tgl_awal))); // Tgl Selesai termasuk minggu & libur nasional
$lama_cuti2 = selisihHari($tgl_awal, $tgl_selesai_dengan_libur); // Dapatkan jumlah hari libur dari tanggal mulai sampai 8 hari kedepan
// die();
$lama_cuti = $lama_cuti1+1+($lama_cuti1-$lama_cuti2); // Tambahkan Jumlah hari libur dengan lama cuti
$tgl_selesai_tanpa_libur = date('Y-m-d', strtotime('+'.$lama_cuti.' days', strtotime($tgl_awal))); // Hasil akhir
echo "lama Cuti $lama_cuti1 <br>";
echo "Tanggal Mulai $tgl_awal <br>";
echo "Tanggal Selesai $tgl_selesai_tanpa_libur <br>";
@Loetfi
Copy link
Author

Loetfi commented Feb 20, 2019

$lama_cuti = $lama_cuti1+1+($lama_cuti1-$lama_cuti2);

Sengaja di lebihin 1 hari

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment