Bagaimana ambil data tanggal saat weekend pada range tanggal?

Saya punya beberapa variabel $date_start = 2018-03-01; $date_end = 2018-03-22;

Saya ingin mengambil data pada hari sabtu & minggu saja diantara tanggal itu dan memasukanya kedalam variabel seperti: $weekend = ('2018-03-03','2018-03-04','2018-03-16','2018-03-17')

Sebab saya ingin memasukan $weekend pada SQL Query ini: SELECT COUNT(in_hr) as count FROM `msabsensi` WHERE `nama`='$nama' AND date BETWEEN '$date_start' AND '$date_end' AND date IN ('$weekend')

Terimakasih.

avatar Shinizle
@Shinizle

9 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

4 Jawaban:

 <?php
	function isWeekend($start_date, $end_date, $expected_days) {
		$start_timestamp = strtotime($start_date);
		$end_timestamp   = strtotime($end_date);
		$dates = array();
		while ($start_timestamp <= $end_timestamp) {
			if (in_array(date('l', $start_timestamp), $expected_days)) {
				$dates[] = date('Y-m-d', $start_timestamp);
			}
			$start_timestamp = strtotime('+1 day', $start_timestamp);
		}
		return $dates;
	}

	$start_date        =  '2018-03-01';
	$end_date          =  '2018-03-31';
	$expected_days     =  array('Saturday');
	$weekend_dates     =  isWeekend($start_date, $end_date, $expected_days);
	print_r($weekend_dates);
 ?>

https://stackoverflow.com/questions/38324747/get-all-dates-between-range-of-two-dates-and-based-on-the-selected-week?rq=1

avatar dyanzzz
@dyanzzz

5 Kontribusi 2 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih



$date_start = '2018-03-01';
$date_end = '2018-03-22';

$selisih = '86400'; //selisih strtotime untuk satu hari

$time_start = strtotime($date_start);
$time_end = strtotime($date_end);

for ($i=$time_start; $i <= $time_end ; $i=$i+$selisih) {
	//pengecekan apakah tanggal tersebut hari sabtu atau minggu
	if((date('D', $i)=='Sun')OR(date('D', $i)=='Sat')){
		$data[] = date('Y-m-d', $i); //hasil dalam bentuk array
	}
}

print_r ($data);

avatar AlifNur
@AlifNur

164 Kontribusi 72 Poin

Dipost 6 tahun yang lalu

semoga membantu

 $adaysec = 24 * 3600;
	$tgl1 = strtotime('2018-03-01');
    $tgl2 = (strtotime('2018-03-22')) + $adaysec;
	for ($i = $tgl1; $i < $tgl2; $i+=$adaysec) {
        if (date("w", $i) == "0" or date("w", $i) == "6") { //sabtu / minggu
            $weekend[] = date('Y-m-d', $i);
        }
    }
    print_r($weekend);
avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 6 tahun yang lalu

Terimakasih semua atas bantuanya. problem solved.

avatar Shinizle
@Shinizle

9 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban