Programming/PHP

[PHP] 특정 기간의 날짜 배열 만들기

Rexter 2020. 6. 25. 12:09
반응형

쓸 일이 많은지는 잘 모르겠네요.

우선 DB에 있는 데이터를 불러 올 때 정해진 기간에 해당하는 데이터를 불러오는 것은 그냥 쿼리에 date between 을 넣어서 하면 되긴 합니다.

문제는 각 날짜별로 데이터를 취합해야 할 때 인데, 이런저런 방법을 다 써봤지만 뭔가 불편하고 귀찮더군요

 

그래서 일단 시작~끝 날짜를 지정해주면 배열로 각 날짜를 반환하는 함수를 만들어 봤습니다.

 

function getDaysArray($sdate, $edate){

  $array_days = array();

  $dt_sdate = new DateTime($sdate);

  $dt_edate = new DateTime($edate);

  $dt_today = new DateTime(date('Y-m-d'));

 

  $diff = date_diff($dt_sdate, $dt_edate);

  $diff_today_edate = date_diff($dt_edate, $dt_today);

  $date_interval_sdate_edate = ($diff->days);

  $date_interval_today_edate = $diff_today_edate->days;

 

  for($i=$date_interval_sdate_edate; $i>=0; $i--){

    array_push($array_days, date('Y-m-d', strtotime('-'.($date_interval_today_edate + $i).' days')));

  }

 

  return $array_days;

}

 

간단히 설명 드리자면

new DateTime 는 date('Y-m-d'); 같은 식으로 만들어진 값을 날짜형으로 변환해 주는 거라고 보시면 됩니다.

date_diff에서는 날짜형(정확한 명칭이?)일 때만 사용이 가능한 거 같습니다.

$sdate, $edate 의 경우 '2020-06-25' 와 같은 형식의 값이 들어가야 됩니다.

date('Y-m-d'); 의 결과값입니다.

 

시작일과 종료일의 날짜 차이를 구하고

종료일과 오늘의 날짜 차이를 구한 후

 

date() 함수를 이용해 각 날짜를 구하는 방법입니다.

 

for문에는 가장 오래된 날짜부터 나올 수 있도록 시작값 등을 지정해 뒀으니 사용하실 때 참고해 주세요.

반응형