Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP gmstrftime() 함수 완벽 가이드 – GMT/UTC 날짜·시간 포맷팅 방법

PHP의 gmstrftime() 함수는 로캘(locale) 설정에 따라 GMT/UTC 기준의 날짜와 시간을 지정된 형식으로 포맷팅하여 문자열로 반환합니다. 서버의 현지 시간을 기준으로 동작하는 strftime() 함수와 달리, gmstrftime()은 그리니치 평균시(GMT/UTC)를 기준으로 결과를 생성한다는 점이 핵심 차이입니다.

참고로 이 함수는 PHP 8.1.0부터 공식적으로 지원 중단(deprecated)되었으므로, 새로운 프로젝트에서는 IntlDateFormatter 클래스나 date() 함수 사용을 권장합니다.

문법

gmstrftime(format, timestamp)

매개변수

  • timestamp − 포맷팅할 날짜 및 시간을 나타내는 Unix 타임스탬프입니다. 생략하면 현재 시간이 사용됩니다.

  • format − 결과를 어떤 형식으로 반환할지 지정합니다:

    • %a − 요일 이름(축약형)

    • %A − 요일 이름(전체)

    • %b − 월 이름(축약형)

    • %B − 월 이름(전체)

    • %c − 해당 로캘이 선호하는 날짜 및 시간 표현

    • %C − 세기 숫자(연도를 100으로 나눈 값, 범위 00~99)

    • %d − 일(01~31)

    • %D − %m/%d/%y와 동일

    • %e − 일(1~31)

    • %g − %G와 같으나 세기는 제외

    • %G − ISO 주 번호(%V 참조)에 해당하는 4자리 연도

    • %h − %b와 동일

    • %H − 시간(24시간제, 00~23)

    • %I − 시간(12시간제, 01~12)

    • %j − 연중 경과 일수(001~366)

    • %m − 월(01~12)

    • %M − 분

    • %n − 줄바꿈 문자

    • %p − 주어진 시간값에 따라 am 또는 pm 표시

    • %r − 오전/오후 표기법의 시간

    • %R − 24시간 표기법의 시간

    • %S − 초

    • %t − 탭 문자

    • %T − 현재 시간(%H:%M:%S와 동일)

    • %u − 요일 숫자(1~7), 월요일=1. 주의: Sun Solaris에서는 일요일=1

    • %U − 올해의 주 번호(첫 번째 일요일을 첫째 주의 시작일로 계산)

    • %V − 올해의 ISO 8601 주 번호(01~53). 1주차는 당해 연도에 최소 4일이 포함된 첫 번째 주이며, 월요일을 주의 시작일로 합니다.

    • %W − 올해의 주 번호(첫 번째 월요일을 첫째 주의 시작일로 계산)

    • %w − 요일 숫자(십진수), 일요일=0

    • %x − 시간을 제외한 선호 날짜 표현

    • %X − 날짜를 제외한 선호 시간 표현

    • %y − 세기를 제외한 연도(범위 00~99)

    • %Y − 세기를 포함한 연도

    • %Z 또는 %z − 시간대 이름 또는 약어

    • %% − % 문자 자체

반환값

gmstrftime() 함수는 주어진 format 문자열에 따라 timestamp를 포맷팅한 문자열을 반환합니다. timestamp가 생략된 경우 현재 시간을 기준으로 결과를 생성합니다.

예제 1

다음은 strftime()과 gmstrftime()의 차이를 비교하는 예제입니다.

<?php
   setlocale(LC_TIME, 'en_US');
   echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 10, 20, 2017)) . "\n";
   echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 10, 20, 2017)) . "\n";
?>

출력 결과

Oct 20 2017 20:00:00
Oct 20 2017 20:00:00

예제 2

다음은 로캘 설정 변경에 따른 출력 차이를 보여주는 또 다른 예제입니다.

<?php
   echo(gmstrftime("%B %d %Y, %X %Z",mktime(20,0,0,11,30,91))."<br>");
   setlocale(LC_ALL,"hu_HU.UTF8");
   echo(gmstrftime("%Y. %B %d. %A. %X %Z"));
?>

출력 결과

November 30 1991, 20:00:00 GMT
2018. October 11. Thursday. 05:13:18 GMT

위 예제에서 볼 수 있듯이 setlocale()로 로캘을 변경하면 월 이름과 요일 이름이 해당 언어의 형식으로 출력됩니다. 두 번째 예제에서는 헝가리어(hu_HU.UTF8) 로캘을 적용했음에도 영문으로 표시된 것은 서버 환경에 해당 로캘이 설치되어 있지 않기 때문일 수 있으며, 실제 운영 환경에서는 로캘 패키지 설치 여부를 확인해야 합니다.