PHP hafta içi günleri bulmak

1) PHP ile belirli günden önceki ilk hafta içi gün ve son hafta içi günü bulmak.
2) PHP ile belirli günden önceki Tüm hafta içi günleri bulmak.
3) PHP ile belirli günden önceki Tüm hafta sonu günleri bulmak.


Fonksiyonun kullanımı hakkında (weekday fonksiyonu en altadır.):

  • $total_before_day: Kaç günden önceki hafta içi günleri bulmak istiyoruz.
  • $response_type: sonuc nasıl dönmesini istiyorsak aşağıdaki typelardan birini kulanırız. respose type belirtmesek varsayılan olarak first_and_end_day değerini alır.
    • first_and_end_day: Başlangıç ve bitişdeki hafta içi günü döner.
    • all_weekday: Tüm hafta içi günleri döner.
    • all_weekend: Tüm hafta sonu günleri döner.
  • $sort: Dönen tarih değerini sıralamak için kullanılır.Değer belirtmek isek ASC (küçükten büyüğe) geçmişten günümüze göre sıralar.
    • ASC: Geçmiş tarihten en yakın tarihe göre sıralar (küçükten büyüğe göre).
    • DESC: Yakın tarihten geçmiş tarihe göre sıralar (büyükten küçüğe göre).


ÖRNEK KULLANIMI:
1 ) 10 gün önceki hafta içi başlangıç tarihi ve son tarihi döner.
Varsayılan olarak  $response_type = 'first_and_end_day' değerini alır.
Varsayılan olarak  $sort = 'ASC' değerini alır.

Çalışma Tarih :03.05.2020
$response = weekday(10);
var_dump($response);

SONUC:
array(2) {
  [0]=>
  string(10) "2020-04-20"
  [1]=>
  string(10) "2020-05-01"
}

2 ) 15 gün önceki, tüm hafta içi günleri getir , (DESC) Yakın tarihten uzak tarihe göre.

Çalışma Tarih :03.05.2020
$response = weekday(15,'all_weekday','DESC');
var_dump($response);


SONUC:
array(15) {
  [0]=>
  string(10) "2020-05-01"
  [1]=>
  string(10) "2020-04-30"
  [2]=>
  string(10) "2020-04-29"
  [3]=>
  string(10) "2020-04-28"
  [4]=>
  string(10) "2020-04-27"
  [5]=>
  string(10) "2020-04-24"
  [6]=>
  string(10) "2020-04-23"
  [7]=>
  string(10) "2020-04-22"
  [8]=>
  string(10) "2020-04-21"
  [9]=>
  string(10) "2020-04-20"
  [10]=>
  string(10) "2020-04-17"
  [11]=>
  string(10) "2020-04-16"
  [12]=>
  string(10) "2020-04-15"
  [13]=>
  string(10) "2020-04-14"
  [14]=>
  string(10) "2020-04-13"
}

3 ) 20 gün önceki, tüm hafta sonu günleri getir , (ASC) Uzak tarihten yakın tarihe göre

Çalışma Tarih :03.05.2020
$response = weekday(20,'all_weekend','ASC');
var_dump($response);

SONUC:
array(8) {
  [0]=>
  string(10) "2020-04-11"
  [1]=>
  string(10) "2020-04-12"
  [2]=>
  string(10) "2020-04-18"
  [3]=>
  string(10) "2020-04-19"
  [4]=>
  string(10) "2020-04-25"
  [5]=>
  string(10) "2020-04-26"
  [6]=>
  string(10) "2020-05-02"
  [7]=>
  string(10) "2020-05-03"
}

FONKSİYON :


function weekday($total_before_day,$response_type='first_and_end_day',$sort='ASC'){
    $day_count         = $total_before_day;
    $all_weekday_count = 0;

    for($i = 0$i<$day_count$i++){
        $date_decrease = date('Y-m-d'strtotime(-$i." day"));

        if($i == 0){
            echo $date_decrease = date('Y-m-d');
        }

        $name_of_day   = date('D'strtotime($date_decrease));



        if($name_of_day == 'Sat' OR $name_of_day == 'Sun'){
            $day_count++;
        }

        if$response_type == 'first_and_end_day'){
            if($i == 0){
                if($name_of_day == 'Sat'){
                    $date_decrease = date('Y-m-d'strtotime("-1 day"));
                }
                else if($name_of_day == 'Sun'){
                    $date_decrease = date('Y-m-d'strtotime("-2 day"));
                }
                $data_arr[0] = $date_decrease;
            }
            else if($i == $day_count-1){
                if($name_of_day == 'Sat'){
                    $end_day       = $i+1;
                    $date_decrease = date('Y-m-d'strtotime(-$end_day." day"));
                }
                else if($name_of_day == 'Sun'){
                    $end_day       = $i+2;
                    $date_decrease = date('Y-m-d'strtotime(-$end_day." day"));
                }
                $data_arr[1] = $date_decrease;
            }
        }
        else if($response_type == 'all_weekday'){
            if($name_of_day != 'Sat' AND $name_of_day != 'Sun'){
                $data_arr[$all_weekday_count] = $date_decrease;
                $all_weekday_count++;
            }
        }
        else if($response_type == 'all_weekend' AND ($name_of_day == 'Sat' OR $name_of_day == 'Sun')){
            $data_arr[$all_weekday_count] = $date_decrease;
            $all_weekday_count++;
        }
    }
    if($sort == 'DESC'){
        usort($data_arr);
    }
    else{
        sort($data_arr);
    }
    
    return $data_arr;
}