[PHP] 날짜에 맞는 요일을 구하고 텍스트 형식으로 표시하는 방법

folder프로그래밍

query_stats0

다들 잘 아시다시피 PHP 에서 어떤 날짜의 요일을 구하기 위해서는 아래와 같이 date 함수를 사용해야 합니다.

date( 'w', '2025-02-03' );

이렇게 해주면 date 함수가 투입된 날짜에 맞는 요일을 구해서 0~6 까지의 숫자1로 반환을 해주거든요? 위 예시에서는 아마 월요일을 뜻하는 “1“이 반환 될 것입니다.

문제

그런데 정작 사용자에게 요일을 표시하기 위해서 date 함수를 그대로 보여주면, 사용자가 PHP 언어를 이해하지 못 하는 대다수의 경우 이 숫자가 무슨 의미인지 모르니 사용자에게 만큼은 우리에게 익숙한 “월요일” 또는 적어도 “Monday” 라고는 표시를 해줘야 할 것 같아요.

솔루션

1을 월요일이라고 보여주기 위해서는 아래와 같은 방법을 사용할 수 있습니다.

if 문 사용하기

$day = date( 'w', '2025-02-03' );
if ( $day == 0 ) {
    return '일요일';
} elseif ( $day == 1 ) {
    return '월요일';
} 

...

} elseif ( $day == 6 ) {
    return '토요일';
} 

아 그런데 이건 뭔가 좀 나이스 하지 않죠?

switch 문 사용하기

아래와 같은 방법도 생각해 볼 수 있습니다.

$day = date( 'w', '2025-02-03' );
switch ( $day ) {
    case 0 : return '일요일'; break;
    case 1 : return '월요일'; break;

    ....

    case 6 : return '토요일'; break;
}

아무래도 if 문 보다는 조금더 “나이스” 해보이긴 하는데, 이것도 그렇게 느낌이 있지는 않아요.

배열 사용하기

그래서 많은 선지자들은 아래와 같이 사용합니다.

$dayStr = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
$day = date( 'w', '2025-02-03' );
return $dayStr[$day];

간단하게 위 코드에 대해 설명하자면, $dayStr 이라는 배열을 미리 선언 해놓고 그 안에 각 요일을 일요일부터 순서대로 담아 준 다음 꺼내 사용하는 것입니다.

PHP 배열의 요소는 기본적으로 0 부터 시작을 하니까, $datStr[0] 이라고 하면 일요일이 반환되는 그런 구조가 되니, 여기에 date 함수에 반환 받은 값을 넣어줘서 그 key 에 맞는 텍스트로 된 요일을 반환해주도록 하는 것입니다.

ifswitch 에 비해 좀 더 나이스 해보이나요?

이를 응용해서 다른 곳에도 잘 활용할 수 있을 것 같습니다.

끝.

참고자료


  1. 0(일요일)을 시작으로 6(토요일)까지 요일을 반환 

    댓글 남기기