Last active
February 20, 2019 09:07
-
-
Save Loetfi/8c650ee7dbcec216f9e5e3a424a01d5f to your computer and use it in GitHub Desktop.
monggo di liat mas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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>"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
$lama_cuti = $lama_cuti1+1+($lama_cuti1-$lama_cuti2);
Sengaja di lebihin 1 hari