정의 및 사용 방법
- PHP 버전
- 4+
date() 함수는 날짜와 시간을 지정한 형식(포맷, Format)에 맞춰서 문자열로 반환합니다.
이 함수는 원하는 형식으로 날짜와 시간을 출력할 때 주로 사용됩니다.
특징
- 현재 또는 특정 날짜와 시간을 지정하여, 원하는 형식의 문자열로 만들 수 있습니다.
- 문자열로 반환하기 때문에, 출력이나 문자열 비교 등에 활용하기 쉽습니다.
기본 예제
/**
* 간단 구문 설명
*
* date(string $format, ?int $timestamp = null): string
* @param string $format (필수): 원하는 날짜와 시간 형식
* @param int $timestamp (옵션): 원하는 시간을 지정하는 유닉스 타임스탬프(Unix Timestamp)
* 지정하지 않으면 null이며 현재 시점의 유닉스 타임스탬프가 지정됨
* @return string
*/
/* 현재 시점 기준 */
echo date('Y-m-d H:i:s'); // 출력 예시: 2025-05-13 14:30:05
echo date('F j, Y'); // 출력 예시: May 13, 2025
echo date('Y年m月d日'); // 출력 예시: 2025年05月13日
echo date('Y년 m월 d일'); // 출력 예시: 2025년 05월 13일
/* 원하는 특정 날짜와 시간을 지정했을 때 */
$timestamp = strtotime('2012-07-30'); // 매개변수로 전달된 거의 모든 날짜와 시간을 유닉스 타임스탬프로 반환
echo date('Y-m-d H:i:s', $timestamp); // 출력 예시: 2012-07-30 00:00:00
echo date('F j, Y', $timestamp); // 출력 예시: July 30, 2012
echo date('Y年m月d日', $timestamp); // 출력 예시: 2012年07月30日
echo date('Y년 m월 d일', $timestamp); // 출력 예시: 2012년 07월 30일
참고하세요!
여기에서 말하는 현재, 또는 현재 시점이란
현재 date() 함수가 사용되는 현재 PHP 스크립트에 설정된 기본 날짜 시간대(timezone)를 기준으로 합니다.
유닉스 타임스탬프(Unix Timestamp)는 컴퓨터가 시간을 기록하기 위해 사용하는 숫자 형식의 컴퓨터 간 공통 시각 표현 방식으로, 날짜와 시간을 '초(seconds)' 단위로 변환한 정수입니다. 사람이 직접 이 숫자 형식을 계산하기 어렵기 때문에 PHP에서는 주로 strtotime() 함수를 이용해 날짜와 시간을 유닉스 타임스탬프로 변환합니다.
구문
date(string $format, ?int $timestamp = null): string
매개변수
$format |
필수. 원하는 날짜와 시간 형식을 문자열로 지정합니다.
DateTimeInterface::format()에서 허용하는 형식이어야 합니다.
$format에 허용하는 날짜와 시간 형식을 참고하세요. |
|---|---|
$timestamp |
옵션. 원하는 시간을 지정하는 유닉스 타임스탬프(Unix Timestamp)입니다.
기본값은 null이며, 생략하거나 null을 전달하면 현재 시점의 유닉스 타임스탬프가 지정됩니다. |
$format에 허용하는 날짜와 시간 형식
$format에 문자열로 지정할 수 있는 날짜와 시간 형식은 DateTimeInterface::format()에서 허용하는 형식이어야 합니다. 이 형식은 출력되는 날짜 문자열의 형식입니다.
date() 함수의 첫 번째 매개변수인 $format에는 단순한 문자열이 아니라,
날짜와 시간의 특정 부분의 형식을 상징하는 약속된 문자로 된 기호들을 조합해서 지정합니다. 이 기호들을 일반적으로 "형식(또는, 포맷) 기호"라고 부르며, 대소문자를 엄격히 구분합니다.
아래의 형식 기호를 참고하세요.
자주 사용하는 주요 형식 기호
| 구분 | 형식 기호 | 출력 예시 | 설명 |
|---|---|---|---|
| 연도 | Y |
2026 |
4자리 연도 |
| 연도 | y |
26 |
2자리 연도 |
| 월 | M |
Feb |
월에 해당하는 영문 약자(Jan ~ Dec) |
| 월 | m |
02 |
0을 포함한 월(01 ~ 12) |
| 월 | n |
2 |
0을 제외한 월(1 ~ 12) |
| 일 | d |
07 |
한 자릿수에 0을 포함한 일(01 ~ 31) |
| 일 | j |
7 |
한 자릿수에0을 제외한 일(1 ~ 31) |
| 요일 | 형식 기호는 기본적으로 영문 요일만 지원합니다. | ||
| 요일 | l |
Friday |
영문 요일 전체(Sunday ~ Saturday) |
| 요일 | D |
Fri |
영문 요일 약자(Sun ~ Sat) |
| 시간 | H |
15 |
24시간 형식의 시(00 ~ 23) |
| 시간 | h |
03 |
12시간 형식의 시(01 ~ 12) |
| 분 | i |
25 |
0을 포함한 분(00 ~ 59) |
| 초 | s |
25 |
0을 포함한 초(00 ~ 59) |
| 오전/오후 | A |
AM, PM |
대문자 오전/오후 |
| 오전/오후 | a |
am, pm |
소문자 오전/오후 |
더 많은 형식 기호가 궁금하신가요?
위에서 소개한 기호들은 실무에서 가장 빈번하게 사용되는 핵심 기호들입니다. 이 외에도 PHP 공식 문서에서는 요일의 서수 표현, ISO-8601 형식, 마이크로초 단위 등 더욱 세밀한 설정을 위한 다양한 기호들을 제공합니다.
전체 기호 목록과 상세한 설명은 PHP 공식 영문 매뉴얼(DateTimeInterface::format)을 참고하세요.
반환 값
날짜와 시간을 지정한 형식(포맷, Format)에 맞춰서 문자열로 반환합니다.
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | PHP 8.0.0부터 $timestamp 매개변수가 이제 nullable하게 변경되었습니다. 이것은 이제 encoding 매개변수를 생략하거나 null로 설정할 수 있음을 의미합니다. 이전에는 반드시 유효한 $timestamp를 지정해야 했었습니다. |
형식 기호를 조합한 날짜와 시간 출력 예제
date() 함수의 $format 매개변수에는 형식 기호뿐만 아니라 하이픈(-), 콜론(:), 공백, 그리고 일반 문자열(예: 영어, 한글, 일본어, 한자 등)도 함께 사용할 수 있습니다.
PHP는 $format 문자열을 해석할 때, 약속된 형식 기호는 해당하는 날짜와 시간 값으로 교체하고, 일반 문자들은 입력한 그대로 출력합니다. 이를 활용하면 우리가 원하는 거의 모든 형태의 날짜 형식을 문화나 관습 등에 맞춰서 만들 수 있습니다.
연-월-일 조합 (기본 형식)
연-월-일 조합은 특정 국가나 언어, 문화와 상관없이 가장 널리 쓰이며, 하이픈(-) 또는 슬래시(/) 구분자를 사용한 형식입니다.
echo date('Y-m-d'); // 출력 예시: 2026-02-27
echo date('Y/m/d'); // 출력 예시: 2026/02/27
시:분:초를 포함한 조합
데이터베이스 기록이나 로그 파일처럼 주로 컴퓨터 시스템 등에서 시간을 저장하고 관리할 때 사용하는 24시간제 형식입니다.
echo date('Y-m-d H:i:s'); // 출력 예시: 2026-02-27 18:10:45
한국의 관습에 맞는 형식
형식 기호 사이에 한글을 함께 사용하면 한국의 관습에 맞는 형식으로 날짜와 시간을 출력할 수 있습니다.
echo date('Y년 m월 d일'); // 출력 예시: 2026년 05월 13일
echo date('Y년 m월 d일 H:i'); // 출력 예시: 2026년 05월 13일 18:10
한국의 관습에 맞는 형식 - 오전/오후 조합
date() 함수가 반환하는 영문 오전/오후에 대한 형식 기호(A)를 체크하여 한국어로 교체해 출력하는 방법입니다.
// 시점이 오전(AM)인지 오후(PM)인지 체크합니다.
$ampm = date('A') === 'AM' ? '오전' : '오후';
echo $ampm . date(' h시 i분'); // 출력 예시: 오후 06시 45분
한국의 관습에 맞는 형식 - 요일 조합
date() 함수의 요일 형식 기호(l, D 등)는 영문 요일만 지원합니다. 날짜와 요일을 모두 한국의 관습에 맞게 출력하려면, 날짜 형식 기호 사이에 한글을 넣고 영문 요일을 한글로 교체하여 결합합니다.
// 오늘 요일의 영문 전체 이름(예: Friday)을 가져옵니다.
$english_day = date('l');
// 영문 요일을 한글 요일로 교체하기 위한 배열입니다.
$days = [
'Sunday' => '일요일',
'Monday' => '월요일',
'Tuesday' => '화요일',
'Wednesday' => '수요일',
'Thursday' => '목요일',
'Friday' => '금요일',
'Saturday' => '토요일'
];
// 날짜와 한글로 교체한 요일을 결합하여 출력합니다.
echo date('Y년 m월 d일 ') . $days[$english_day];
// 출력 예시: 2026년 02월 27일 금요일
영문 표기를 포함한 형식
영어 문화권에서 많이 사용하는 형식으로 날짜와 시간을 출력할 수 있습니다.
echo date('F j, Y'); // 출력 예시: February 27, 2026
echo date('M j, Y'); // 출력 예시: Feb 27, 2026
원하는 특정 날짜와 시간 지정하기
date() 함수의 두 번째 매개변수를 활용하면 현재가 아닌 특정 시점의 날짜와 시간을 출력할 수 있습니다. strtotime() 함수를 이용해 원하는 특정 날짜와 시간을 유닉스 타임스탬프로 변환할 수 있습니다.
$timestamp = strtotime('2012-07-30');
// 매개변수로 전달된 거의 모든 날짜와 시간을 유닉스 타임스탬프로 반환합니다.
echo date('Y-m-d H:i:s', $timestamp);
// 출력 예시: 2012-07-30 00:00:00