정의 및 사용 방법
- PHP 버전
- 4+
strtotime() 함수는 매개변수로 전달되는 사람이 읽을 수 있는 영문 기반의 텍스트나 숫자로 된 날짜와 시간 문자열을 유닉스 타임스탬프(Unix Timestamp)로 반환합니다.
유닉스 타임스탬프(Unix Timestamp)는 컴퓨터가 시간을 기록하기 위해 사용하는 숫자 형식의 공통 시각 표현 방식으로, 날짜와 시간을 '초(seconds)' 단위로 변환한 정수입니다. 사람이 직접 이 유닉스 타임스탬프 값을 계산하기 어렵기 때문에 PHP에서는 주로 strtotime() 함수를 이용해 사람이 읽을 수 있는 날짜와 시간 문자열을 유닉스 타임스탬프로 변환합니다.
특징
- 매개변수로 전달되는 날짜와 시간 문자열은 영문 기반의 텍스트(예:
'10 September 2000')나 숫자 기반의 날짜 형식('2000-09-10') 등의 형식입니다. - PHP가 해석할 수 있는 형식으로 지정하면 유닉스 타임스탬프(Unix Timestamp)로 변환하여 정수(int)로 반환합니다.
- 영문이 아닌 다른 언어(예: 한국어, 일본어 등 다국어)가 포함된 문자열(예:
'2000년 9월','2000年 9月')은 해석할 수 없으므로false를 반환합니다.
참고하세요!
이 함수에 대해 PHP 공식 문서에서는 "Parse about any English textual datetime description into a Unix timestamp"라고 정의합니다. PHP가 해석할 수 있는 형식에 대한 완전한 목록이나 명확한 규칙이 공식 문서에 정의되어 있지 않으므로, 가급적 대표적인 날짜와 시간 문자열(예: '2000-09-10', '2000-09-10 14:30:05')을 사용하는 것을 고려해 보세요.
기본 예제
strtotime() 함수는 전달되는 날짜와 시간 문자열을 PHP가 해석할 수 있는 형식으로 작성해야 합니다. 아래 예제에서 PHP가 해석할 수 있는 형식과 해석할 수 없는 형식을 구분하여 확인해 보세요.
PHP가 해석할 수 있는 형식
echo strtotime('now'); // 설정된 시간대를 기준으로 하는 현재 시간
echo strtotime('2025-05-13 14:30:05'); // 1747146605
/*
* 시간까지 정확히 전달하지 않으면
* 설정된 시간대를 기준으로 하는
* 유닉스 타임스탬프가 계산되어 반환됩니다.
* 따라서, 설정된 시간대에 따라 반환되는 유닉스 타임스탬프가 달라질 수 있습니다.
*/
echo strtotime('10 September 2000'); // 968544000
echo strtotime('2000-09-10'); // 968544000
echo strtotime('2000/09/10'); // 968544000
echo strtotime('September 2000'); // 967766400 (2000년 9월 1일 00:00:00)
echo strtotime('2000 September'); // 967766400 (2000년 9월 1일 00:00:00)
PHP가 해석할 수 없는 형식
strtotime('2000 September 10'); // 영문 작성 순서가 다르면 false
strtotime('2000 09 10'); // 구분자가 없으면 false
strtotime('2000 / 09 / 10'); // 슬래시(/) 앞이나 뒤에 공백이 있으면 false
strtotime('2000 - 09 - 10'); // 하이픈(-) 앞이나 뒤에 공백이 있으면 false
strtotime('2000년 9월'); // 영문이 아닌 다른 언어가 있으면 false
구문
strtotime(string $datetime, ?int $baseTimestamp = null): int|false
매개변수
$datetime |
필수. 유닉스 타임스탬프로 변환할 날짜와 시간 문자열입니다.
영문 기반의 텍스트나 숫자 형식을 사용해야 하며, PHP가 해석할 수 있는 형식이어야 합니다. 상대적인 날짜와 시간(예: '+1 day', 'next Monday')도 지정할 수 있습니다. |
|---|---|
$baseTimestamp |
옵션. 상대적인 날짜(예: '+1 day')를 계산할 때 기준 시점이 되는 유닉스 타임스탬프(Unix Timestamp)입니다. 정수(int)로 지정합니다.
|
반환 값
매개변수로 전달되는 날짜와 시간 문자열을 PHP가 해석할 수 있으면 유닉스 타임스탬프(Unix Timestamp)를 정수(int)로 반환하고, 그렇지 않으면 false를 반환합니다.
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | PHP 8.0.0부터 $baseTimestamp 매개변수가 이제 nullable하게 변경되었습니다. 이것은 이제 $baseTimestamp를 생략하거나 null로 설정할 수 있음을 의미합니다. 이전에는 반드시 유효한 $baseTimestamp를 지정해야 했었습니다. |
상대적인 날짜와 시간 표현
strtotime() 함수는 사람이 읽을 수 있는 상대적인 날짜와 시간 표현을 매개변수로 사용하여, 기준 시점을 기준으로 계산된 유닉스 타임스탬프로 변환할 수 있습니다.
echo strtotime('+1 day'); // 현재 시점에서 하루 후
echo strtotime('-1 week'); // 현재 시점에서 일주일 전
echo strtotime('next Monday'); // 다음 월요일
echo strtotime('last day of this month'); // 이번 달 마지막 날
// 기준 시점으로 $baseTimestamp를 사용할 경우
$base = strtotime('2025-01-01');
echo strtotime('+1 day', $base); // 2025-01-02에 대한 유닉스 타임스탬프 반환
활용 예제
앞서 설명한 것처럼, 사람이 직접 유닉스 타임스탬프 값을 계산하기는 어렵습니다.
PHP에서는 주로 strtotime() 함수를 사람이 읽을 수 있는 날짜와 시간 문자열을 유닉스 타임스탬프로 변환하기 위한 용도로 사용합니다.
다음의 예제에서는 strtotime() 함수를 사용해 사람이 읽을 수 있는 날짜 문자열을 유닉스 타임스탬프로 변환하고, date() 함수를 통해 사람이 읽기 쉬운 형식으로 출력하는 방법을 보여줍니다.
/* 원하는 특정 날짜와 시간을 지정했을 때 */
$timestamp = strtotime('2012-07-30'); // '2012-07-30'에 대한 유닉스 타임스탬프
echo date('Y-m-d H:i:s', $timestamp); // 출력 예시: 2012-07-30 00:00:00