timestamp(1970년 1월 1일부터 지금까지를 초로 센 숫자)를 받아서 사람이 읽는 날짜로 바꿀 때 많이 쓰는 것은 date()다. 예시는 아래와 같다.

echo date('Y-m-d', $timestamp);

그러나 date()는 요일을 영어로만 출력해 준다. 그래서 요일 넘버를 받아 처리하곤 하는데, PHP 기본 함수중에 한글로 요일을 출력해 주는 함수가 있다(물론 로케일이 한글로 설정돼 있어야 할 것이다).

strftime()이 바로 그 함수다. 자세한 내용은 링크의 공식 문서를 참고하고, 예시 하나만 넣는다.

echo strftime('%h %e일(%a)', $timestamp);
echo strftime('%Y-%m-%d %H:%M:%S', $timestamp);
echo strftime('%F %T', $timestamp);

위처럼 쓰면 ‘10월 3일(월)’ 하는 식으로 출력된다. strftime에서 사용하는 문자열 포맷이 다른 프로그래밍 언어에서도 더 널리 사용되는 형식이라고 하니 앞으론 이걸 쓰는 게 더 낫겠다.

한편, 날짜 문자열을 timestamp로 변경할 때는 strtotime()을 사용하면 편하다. (strtotime('2014-01-02 15:30:11'))

운영체제와 로케일 세팅의 영향을 받는다

만약 한글 로케일이 운영체제에 설치돼 있지 않다면 제대로 작동하지 않는다(영어로 나온다). 우분투 같은 데비안 계열이라면 다음 명령어로 설치하고 세팅한다.

sudo apt-get install language-pack-ko
sudo dpkg-reconfigure locales

운영체제 기본 로케일을 변경하면 해당 로케일에 따라 월과 요일이 출력될 테지만, 그렇지 않다면 PHP에서 로케일을 세팅한다. 다음 코드를 PHP에서 사용하면 된다.

setlocale(LC_ALL, "ko_KR.utf-8");

utf-8 대신 euc-kr을 써도 된다고 들었는데 테스트하진 않았다. setlocale 함수가 받는 첫 번째 인자값은 PHP 매뉴얼을 참고하라.