PHP에서 이번달구하는 방법은 정말간단하다.

date함수를 사용하는것인데


1.이번달 구하기

 

$month = date('Y-m');

echo $month

 

 

2.첫째날 구하기

 

첫째날은 무조건 1일부터이기 때문에

$first_day = date('Y-m-01');

3.마지막날 구하기

 

마지막날 같은경우는 2월달때문에 문제가많은데 date함수를 쓰면 해결된다.

$last_day = date('Y-m-t', $time);

 

결과화면)

4.다른달을 구하고싶을때

 

다른달을 구할때에는 strtotime이라는 함수가 추가된다.

strtotime은 unix 타임스태프로 변경되는것인데 

시간은 알다시피 문자열로 적혀있다. 이걸 1970년기준으로 상대적 시간차이를 숫자로 나타내어 시간 값끼리의 비교를 가능하게한다. 

*Unix 타임 스탬프는 UTC 1970 년 1 월 1 일 자정 이후 경과 된 시간 (초)으로 정의된다

 

$month=date("2021-02");
echo "다른달: ".$month."<br>";

$first_day = date('Y-m-01',strtotime($month));

$last_day = date('Y-m-t',strtotime($month));

echo "첫째날: ".$first_day."<br>";

echo "마지막날: ".$last_day."<br>";

 

결과화면)

 

 

4-2.이번달기준 저번달과 다음달 구하기

$date = date('Y-m-01');
$time = strtotime($date);

$prev_date = date('Y-m-d', strtotime("first day of -1 months", $time));//저번달
$next_date = date('Y-m-d', strtotime("first day of +1 months", $time));//이번달

 

 

5.첫째날부터 마지막날까지 반복문(loop)

 

$month=date("2021-02");

$first_day = date('Y-m-01',strtotime($month));

$last_day = date('Y-m-t',strtotime($month));

while (strtotime($first_day) <= strtotime($last_day)) {
    echo $first_day."<br>";
    $first_day = date("Y-m-d", strtotime("+1 day", strtotime($first_day)));

}

결과화면)