Ada saat nya ketika kita mengolah data terutama yg sering berkaitan dengan transaksi, tak luput dari proses pengolahan waktu.

Proses penyimpanan maupun pemilahan tampilan data transaski (reporting) yang bisa memakai interval (diff()) maupun per minggu, kadang membuat kita lupa bahwa banyak fungsi di dalam PHP yang bisa kita kembangkan dan olah untuk keluwesan program yang sedang kita kembangkan.

Nah dari alasan tersebut saya mencoba mencatatkan kembali fungsi yang bisa dimanfaatkan dalam mengolah informasi dari fungsi Date() di dalam perograman PHP.

Misal ketika kita akan mengetahui minggu ke berapa dalam kalender jika tanggal 2018-08-17, nah kalau kita manusia bisa langsung tahu dengan cara melihat kalender cetak maupun kalender aplikasi baik di Gadget maupun di kalender OS.

Nah kalau kita mengikuti prosedur manual tersebut sudah tidak etis dong, system melakukan itu? biarkan sistem yg kita kembangkan menilai dan mencari sendiri jika kita tanya minggu keberapakah jika tanggal 30 Desember 2050?

Untuk menjawab pertanyaan tersebut sudah saya sadur fungsi yang dibuat oleh Asif Hussain di Stackoverflow, berikut fungsi nya.

//Convert date('Y-m-d') to weekNumberPer Month
function dateToWeek($qDate){
    $dt = strtotime($qDate);
    $day  = date('j',$dt);
    $month = date('m',$dt);
    $year = date('Y',$dt);
    $totalDays = date('t',$dt);
    $weekCnt = 1;
    $retWeek = 0;
    for($i=1;$i<=$totalDays;$i++) {
        $curDay = date("N", mktime(0,0,0,$month,$i,$year));
        if($curDay==7) {
            if($i==$day) {
                $retWeek = $weekCnt+1;
            }
            $weekCnt++;
        } else {
            if($i==$day) {
                $retWeek = $weekCnt;
            }
        }
    }
    return $retWeek;
}

Untuk menggunakanya simpan fungsi tersebut ke dalam Helper masing-masing untuk digunakan dalam aplikasimu.

Menggunakanya cukup mudah:
<?php
echo dateToWeek('2050-12-30');
?>
Pasti hasilnya: 5

Jika dicek di kalender system.. hasilnya sama:

Post a Comment

Silahkan anda tulis komentar di bawah ini !

 
Top