본문 바로가기
PHP

[PHP] 날짜 입력으로 해당 월에 몇주차인지 구하기

by teamnova 2022. 7. 15.

안녕하세요.

오늘은 PHP로 지정한 날짜가 몇월 몇주차인지 알아보는 예제를 진행해보겠습니다.

 

해당 달의 첫 주는 월요일부터 시작하는 주라는 기준으로 구해보겠습니다.

<?php 

$today = date("2022-06-21");
$now_week = getWeek($today); //date("Y-m-d") 입력도 가능합니다
echo $today."는 6월의".$now_week."번째 주 입니다.";

function getWeek($date){
    $DEFAULT_DAYS = 1; //1 ~ 7 (월 ~ 일)
    list($yy, $mm, $dd) = explode('-', $date); // - 로 잘라서 연,월,일을 구합니다
    $first_day = date('N', mktime(0,0,0,$mm, 1, $yy)); //입력한 날짜의 해당하는 월의 1일이 몇요일인지 구합니다.
    
    if($first_day <= $DEFAULT_DAYS){  
        $remain_days = $DEFAULT_DAYS - $first_day;
        $next_monday = $remain_days +1;
    }else{
        $remain_days= 7 - $first_day; //1일을 기준으로 해당주가 몇일 남았는지 구합니다.
        $next_monday = $remain_days + $DEFAULT_DAYS +1; //1일 기준으로 차주의 월요일이 몇일인지 구합니다.
        echo $next_monday;
    }

    if($dd < $next_monday){ //입력한 날짜가 전달의 마지막주에 포함될 경우.
        $new_date = date('Y-M-d', mktime(0,0,0,$mm,0,$yy)); //날짜를 0으로 입력해서 지난달의 마지막 주를 새로계산하도록 합니다.
        return getWeek($new_date);
    }else{
        $week = ceil(($dd-($next_monday -1))/7); //몇번째 주차인지 구하기.
        return $week;
    }


}
?>

 

몇번째 주인지 구할 날짜를 입력하고 해당 달의 1일이 무슨요일인지 구합니다. 

1일이 월요일이 아닐경우 첫번째주가 아니고 지난달의 마지막 주이므로 첫번째 주를 구합니다.

 

출력하면 다음과 같은 결과가 나옵니다.