정의 및 사용 방법
- PHP 버전
- 4+
getdate() 함수는 주어진 유닉스 타임스탬프(Unix Timestamp)를 날짜와 시간 정보로 구성된 연관 배열로 변환하여 반환합니다.
유닉스 타임스탬프(Unix Timestamp)는 컴퓨터가 시간을 기록하기 위해 사용하는 숫자 형식의 공통 시각 표현 방식으로, 날짜와 시간을 초(seconds) 단위로 환산한 정수입니다.
사람이 직접 유닉스 타임스탬프 값을 계산하여 날짜와 시간을 파악하기 어렵기 때문에, PHP에서는 주로 getdate() 함수를 사용해 이를 사람이 읽기 쉬운 형식으로 변환합니다.
특징
- 이 함수는 매개변수로 지정한 유닉스 타임스탬프의 날짜와 시간의 구성 요소(연, 월, 일, 요일, 시, 분, 초 등)를 키(key)와 해당 값으로 분해해서 연관 배열로 변환합니다.
- 매개변수를 생략하면 현재 시점의 날짜와 시간을 기준으로 변환합니다. 현재 시점은 현재 구현되는 PHP 스크립트에 설정된 기본 날짜 시간대(timezone)를 기준으로 합니다.
기본 예제
/*
* <간단 구문 설명>
* getdate(?int $timestamp = null): array
* $timestamp (옵션): 유닉스 타임스탬프. 생략하면 현재 시점의 유닉스 타임스탬프가 사용됨
*/
/* 현재 시점의 날짜와 시간 정보 가져오기 */
$current = getdate();
print_r($current);
/*
반환 값 예시: 현재 시점의 유닉스 타임스탬프를 날짜와 시간 정보로 구성된 연관 배열로 변환하여 반환
Array
(
[seconds] => 44
[minutes] => 13
[hours] => 8
[mday] => 11
[wday] => 3
[mon] => 3
[year] => 2026
[yday] => 69
[weekday] => Wednesday
[month] => March
[0] => 1773216824
)
*/
/* 사람이 읽기 쉬운 배열 요소 접근 예시 */
// 'YYYY-M-D' 형태, 출력 예시: 2026-3-11
echo $current['year'] . '-' . $current['mon'] . '-' . $current['mday'];
// 'H:M:S' 형태, 출력 예시: 8:13:44
echo $current['hours'] . ':' . $current['minutes'] . ':' . $current['seconds'];
부연설명
print_r()은 주어진 변수나 값의 정보를 사람이 읽기 쉬운 형태로 출력(Prints human-readable)하는 디버깅용 함수입니다.
연관 배열과 객체처럼 복잡한 구조를 좀 더 직관적으로 확인할 때 유용합니다.
구문
getdate(?int $timestamp = null): array
매개변수
추가 팁!
현재 설정된 기본 날짜 시간대(timezone)를 확인하고 싶다면 date_default_timezone_get() 함수를 사용해 보세요.
추가 팁!
특정 시점의 날짜와 시간을 유닉스 타임스탬프로 변환하여 정수로 반환하려면 mktime() 함수를 사용하세요.
추가 팁!
현재 시점의 날짜와 시간을 유닉스 타임스탬프로 변환하여 정수로 반환하려면 time() 함수를 사용하세요.
반환 값
매개변수로 주어진 유닉스 타임스탬프(Unix Timestamp)를 날짜와 시간 정보로 구성된 연관 배열(associative array)로 변환하여 반환합니다.
연관 배열은 유닉스 타임스탬프의 날짜와 시간 구성 요소(연, 월, 일, 요일, 시, 분, 초 등)가 키(key)와 해당 값으로 구성되어 있습니다. 연관 배열의 구성 요소는 다음과 같습니다.
| 키(key) | 값 |
|---|---|
'seconds' |
'초'의 숫자를 나타냅니다.
0부터 59까지의 값을 가집니다. |
'minutes' |
'분'의 숫자를 나타냅니다.
0부터 59까지의 값을 가집니다. |
'hours' |
'시'의 숫자를 나타냅니다.
0부터 23까지의 값을 가집니다. |
'mday' |
해당 '월'의 '일'수를 나타냅니다.
1부터 31까지의 값을 가집니다. |
'wday' |
'요일'을 숫자로 나타냅니다.
0('일요일'에 대한 수)에서 6('토요일'에 대한 수)까지의 값을 가집니다. |
'mon' |
'월'을 숫자로 나타냅니다.
|
'year' |
'연도'를 네 자리 숫자로 나타냅니다. |
'yday' |
해당 '연도'에서 경과 '일'수를 나타냅니다.
0부터 365까지의 값을 가집니다. |
'weekday' |
'요일'을 영어식 전체 텍스트로 나타냅니다.
'Sunday'에서 'Saturday'까지의 값을 가집니다. |
'month' |
'월'을 영어식 전체 텍스트로 나타냅니다.
'January'에서 'December'까지의 값을 가집니다. |
0 |
이 함수의 매개변수인 $timestamp의 원본 값을 나타냅니다.
시스템 환경에 따라 표현 가능한 범위가 달라지며, 64비트 시스템에서는 사실상 제한 없이 먼 미래의 시간까지 나타낼 수 있습니다. |
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | $timestamp 매개변수가 이제 nullable하게 변경되었습니다. 이것은 매개변수의 값으로 null을 지정할 수 있음을 의미합니다. |
활용 예제
현재 시점이나 과거의 특정 시점의 유닉스 타임스탬프를 getdate() 함수로 변환하여 사람이 읽기 쉬운 날짜와 시간 정보로 출력하는 방식은 실제 웹 개발에서 흔하게 사용됩니다.
특히, getdate() 함수는 다음 상황에서 자연스럽게 사용됩니다.
- 현재 시점의 날짜나 시간 표시
- 글 작성 날짜나 시간 표시
- 문의 접수 날짜나 시간 표시
- 특정 이벤트 발생 날짜나 시간 표시
다음은 DB에서 가져온 등록 시간(유닉스 타임스탬프)을 getdate() 함수로 활용하는 예시입니다.
// 예시: 게시글이 등록된 시점의 유닉스 타임스탬프 (2026-03-10 14:30:05 기준)
$reg_date_timestamp = 1773120605;
// 타임스탬프를 연관 배열로 변환
$date_info = getdate($reg_date_timestamp);
/* 출력 예시: 2026년 3월 10일 (Tuesday) */
echo $date_info['year'] . '년 ' . $date_info['mon'] . '월 ' . $date_info['mday'] . '일 (' . $date_info['weekday'] . ')';
/* 출력 예시: 등록 시간: 14시 30분 5초 */
// getdate()의 'hours' 값은 24시간 형식(0~23)을 사용합니다.
// 필요에 따라 오전/오후 형식으로 변환하는 로직을 추가하여 표시할 수도 있습니다.
echo '등록 시간: ' . $date_info['hours'] . '시 ' . $date_info['minutes'] . '분 ' . $date_info['seconds'] . '초';
같이 보기
- PHP date_default_timezone_set() 함수 – 날짜 기본 시간대 설정하기
- PHP date_default_timezone_get() 함수 – 날짜 기본 시간대 가져오기
- PHP date() 함수 – 날짜와 시간을 원하는 형식의 문자열로 만들기
- PHP strtotime() 함수 – 영어 기반 날짜와 시간 문자열을 유닉스 타임스탬프로 변환
- PHP time() 함수 – 현재 시점의 날짜와 시간을 유닉스 타임스탬프로 반환
- PHP microtime() 함수 – 현재 시점의 유닉스 타임스탬프를 ‘마이크로초’까지 포함
- PHP mktime() 함수 – 지정한 시점의 날짜와 시간을 유닉스 타임스탬프로 반환
- PHP checkdate() 함수 – 달력상 실제로 존재하는 날짜인지 체크하기