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

PHP strptime() 함수 – strftime()으로 생성한 날짜 문자열 파싱 완벽 가이드

strptime() 함수란?

PHP의 strptime() 함수는 strftime() 함수로 생성된 날짜·시간 문자열을 해석(parse)하여 배열 형태로 반환하는 함수입니다. 파싱에 성공하면 날짜 정보가 담긴 배열을 반환하고, 실패하면 FALSE를 반환합니다.

참고: 이 함수는 운영체제 및 시스템 로케일(locale) 설정의 영향을 받으며, Windows 환경에서는 구현되어 있지 않습니다. 로케일에 독립적인 처리가 필요하다면 date_parse_from_format() 함수를 사용하는 것이 좋습니다.

반환 배열의 구성 요소

  • tm_sec − 초 (0~61)
  • tm_min − 분 (0~59)
  • tm_hour − 시 (0~23)
  • tm_mday − 일 (1~31)
  • tm_mon − 1월 기준 경과 개월 수 (0~11)
  • tm_year − 1900년 이후 경과 연도
  • tm_wday − 일요일 기준 경과 요일 수 (0~6)
  • tm_yday − 1월 1일 기준 경과 일수 (0~365)
  • unparsed − 지정한 형식으로 인식되지 못한 나머지 문자열 (있는 경우)

문법(Syntax)

strptime(date, format)

매개변수(Parameters)

  • date − 해석할 날짜·시간 문자열
  • format − date 문자열에 적용된 형식으로, 아래의 형식 지정자들을 조합하여 작성합니다.

형식 지정자(Format Specifiers) 목록

  • %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 − 줄바꿈(newline) 문자
  • %p − 주어진 시간에 따라 오전(am) 또는 오후(pm)
  • %r − 오전/오후 표기법으로 표시한 시간
  • %R − 24시간 표기법으로 표시한 시간
  • %S − 초
  • %t − 탭(tab) 문자
  • %T − 현재 시간, %H:%M:%S와 동일
  • %u − 요일을 숫자로 표현 (1~7), 월요일=1 ※ 단, Sun Solaris에서는 일요일=1
  • %U − 올해의 주 번호, 첫 번째 일요일을 첫 주의 시작으로 계산
  • %V − ISO 8601 주 번호 (01~53). 해당 연도에 최소 4일이 속하는 첫 주를 1주차로 하며, 월요일을 주의 시작으로 간주
  • %W − 올해의 주 번호, 첫 번째 월요일을 첫 주의 시작으로 계산
  • %w − 요일을 10진수로 표현, 일요일=0
  • %x − 시간을 제외한 선호 날짜 표현
  • %X − 날짜를 제외한 선호 시간 표현
  • %y − 세기를 제외한 연도 (00~99)
  • %Y − 세기를 포함한 연도
  • %Z 또는 %z − 시간대 또는 그 이름·약어
  • %% − 리터럴 % 문자

반환값(Return)

strptime() 함수는 파싱에 성공하면 배열(array)을 반환하고, 실패하면 FALSE를 반환합니다.

사용 예제

다음은 strptime() 함수의 기본적인 사용 예제입니다.

<?php
    $format = '%d/%m/%Y %H:%M:%S';
    $strf = strftime($format);
    echo "$strf\n";
    print_r(strptime($strf, $format));
?>

실행 결과(Output)

11/10/2018 05:18:13
Array
(
    [tm_sec] => 13
    [tm_min] => 18
    [tm_hour] => 5
    [tm_mday] => 11
    [tm_mon] => 9
    [tm_year] => 118
    [tm_wday] => 4
    [tm_yday] => 283
    [unparsed] =>
)

결과 해석 시 주의할 점

반환 배열의 값을 활용할 때는 다음 두 가지를 반드시 기억해야 합니다.

  • tm_year는 1900년 기준 경과 연도이므로, 실제 연도를 구하려면 1900을 더해야 합니다. 위 예제에서 118이므로 1900 + 118 = 2018년입니다.
  • tm_mon은 0부터 시작하므로, 실제 월을 구하려면 1을 더해야 합니다. 위 예제에서 9이므로 10월을 의미합니다.