반응형
Web Development · PHP 날짜·시간 함수
PHP date() — 타임스탬프를 날짜 문자열로 포맷하는 함수
포맷 문자 전체 표 · 타임존 · 현재 시각 출력 · 한글 날짜 완전 정리
시작 오늘 분석할 코드
date()는 유닉스 타임스탬프를 사람이 읽을 수 있는 날짜 문자열로 변환하는 함수입니다. 첫 번째 인수로 포맷 문자열을 지정하고, 두 번째 인수로 타임스탬프를 넘깁니다. 두 번째 인수를 생략하면 현재 시각을 기준으로 동작합니다.
<?php $timestamp = time() + (60 * 60 * 24) * 7; // 지금으로부터 7일 후의 타임스탬프 $next_week = date('Y년 m월 d일 H시i분s초', $timestamp); // 포맷 문자열로 날짜 표현 지정 // Y=연도(4자리), m=월(01~12), d=일(01~31) // H=시(00~23), i=분(00~59), s=초(00~59) print $next_week; // 예: 2025년 06월 22일 10시30분00초 ?>
실제 출력 미리보기
date('Y-m-d') 2025-06-22
date('Y년 m월 d일') 2025년 06월 22일
date('H:i:s') 10:30:00
date('D, d M Y') Sun, 22 Jun 2025
용어 용어 정리
date($format, $ts)포맷 문자열에 따라 타임스탬프를 날짜 문자열로 변환
포맷 문자Y, m, d, H, i, s 등 날짜 각 요소를 나타내는 특수 문자
두 번째 인수 생략생략하면 현재 시각(time())으로 자동 처리
타임존date() 출력은 PHP 타임존 설정을 따름 — date_default_timezone_set 필요
문자 이스케이프포맷 문자 앞에 \를 붙이면 리터럴 출력 — date('\Y')는 "Y" 그대로
date_create()DateTime 객체 생성 — date()의 OOP 버전 (PHP 5.2+)
gmdate()타임존 무관하게 UTC 기준으로 포맷 — 서버 타임존에 독립적
strftime()로케일 기반 날짜 포맷 (한국어 요일 등) — PHP 8.1+ deprecated
1 핵심 포맷 문자 완전 표
날짜·시간 요소를 나타내는 포맷 문자 목록
| 문자 | 의미 | 예시 값 |
|---|---|---|
Y |
연도 4자리 | 2025 |
y |
연도 2자리 | 25 |
m |
월 (01~12, 0 패딩) | 06 |
n |
월 (1~12, 패딩 없음) | 6 |
d |
일 (01~31, 0 패딩) | 07 |
j |
일 (1~31, 패딩 없음) | 7 |
H |
시 24시간 (00~23) | 13 |
h |
시 12시간 (01~12) | 01 |
i |
분 (00~59) | 30 |
s |
초 (00~59) | 00 |
D |
요일 3글자 영어 | Mon, Tue ... Sun |
N |
ISO 요일 번호 | 1=월요일, 7=일요일 |
A |
오전/오후 대문자 | AM, PM |
U |
유닉스 타임스탬프 그대로 | 1750000000 |
t |
해당 월의 총 일 수 | 28, 29, 30, 31 |
L |
윤년 여부 | 1=윤년, 0=평년 |
2 두 번째 인수 생략 — 현재 시각 출력
두 번째 인수를 생략하면 time()을 호출한 것과 같음
// 두 번째 인수 생략 → 현재 시각 echo date('Y-m-d H:i:s'); // 현재 날짜와 시각 출력 // 두 번째 인수에 time() 명시 — 같은 결과 echo date('Y-m-d H:i:s', time()); // 오늘 날짜만 echo date('Y-m-d'); // 현재 시각만 echo date('H:i:s');
3 한글이 포함된 포맷 문자열
포맷 문자가 아닌 한글은 그대로 출력됨
포맷 문자열 안의 문자 중 Y, m, d 등 포맷 문자는 날짜 값으로 치환되고, 나머지 문자(한글 포함)는 그대로 출력됩니다. 단, 포맷 문자로 예약된 영문자(Y, m, d, H, i, s 등)를 리터럴로 출력하려면 백슬래시로 이스케이프해야 합니다.
echo date('Y년 m월 d일'); // 한글 "년", "월", "일"은 포맷 문자가 아니라 그대로 출력 // 결과: 2025년 06월 22일 // "H" 를 리터럴로 출력하려면 이스케이프 echo date('Y-m-d \H:i:s'); // 결과: 2025-06-22 H:30:00 (H가 그대로 출력)
※ 한글 요일(월요일, 화요일...)은 date()가 지원하지 않습니다. 배열로 변환하거나 IntlDateFormatter(국제화 확장) 클래스를 사용해야 합니다.
반응형
4 타임존 설정 — 한국 시간 사용
서버 UTC 설정 vs 한국 KST(UTC+9)
// 스크립트 상단에 한 번만 설정 date_default_timezone_set('Asia/Seoul'); echo date('Y-m-d H:i:s'); // 한국 현지 시각(KST)으로 출력 // UTC로 강제 출력 (타임존 설정과 무관) echo gmdate('Y-m-d H:i:s'); // UTC 기준
5 자주 쓰는 포맷 패턴 모음
$ts = time(); date('Y-m-d', $ts); // 2025-06-22 date('Y/m/d', $ts); // 2025/06/22 date('Y.m.d', $ts); // 2025.06.22 date('Y년 n월 j일 (D)', $ts); // 2025년 6월 22일 (Sun) date('H:i', $ts); // 10:30 date('g:i A', $ts); // 10:30 AM (12시간제) date('D, d M Y H:i:s O', $ts); // RFC 2822 형식 date('c', $ts); // ISO 8601: 2025-06-22T10:30:00+09:00
6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 타임존 미설정 | 출력 시각이 한국 시각보다 9시간 느림 (UTC 기준) | date_default_timezone_set('Asia/Seoul') 상단 설정 |
| i(분)를 m으로 사용 | date('H:m:s') → H:06:00 (m=월 번호) | 분은 i, 월은 m — 헷갈리는 조합 |
| 포맷 문자를 리터럴로 쓰려 함 | date('Y년 A월')에서 A가 AM/PM으로 치환됨 | 리터럴 출력하려면 백슬래시: date('Y년 \A월') |
| 두 번째 인수에 날짜 문자열 직접 전달 | date('Y-m-d', '2025-06-22') — 문자열은 타임스탬프 아님 | strtotime('2025-06-22')로 변환 후 전달 |
| 한글 요일 출력하려 함 | date('D')는 영어 약자만 반환 | 배열 매핑: ['일','월','화','수','목','금','토'][date('w')] |
핵심 한 줄 요약
date($format, $ts)타임스탬프를 포맷 문자열에 따라 날짜 문자열로 변환
자주 쓰는 포맷Y=연도 / m=월 / d=일 / H=시(24) / i=분 / s=초
인수 생략두 번째 인수 생략 시 현재 시각(time()) 사용
타임존date_default_timezone_set('Asia/Seoul') 로 한국 시각 설정
주의분=i, 월=m — 혼동 주의 / 한글 요일은 배열 매핑으로
Tags
#PHP #date함수 #날짜포맷 #타임스탬프 #날짜형식 #시간포맷 #포맷문자 #PHP날짜함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, date함수, 날짜포맷, 타임스탬프, 날짜형식, 시간포맷, 포맷문자, PHP날짜함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP file_put_contents() — 파일 쓰기 · FILE_APPEND · LOCK_EX 완전 정리 (0) | 2026.07.11 |
|---|---|
| PHP file_get_contents() — 파일 전체 읽기 · URL 읽기 · is_readable 완전 정리 (0) | 2026.07.11 |
| PHP mktime() — 특정 날짜의 타임스탬프 생성 · date 연계 · 날짜 계산 완전 정리 (0) | 2026.07.10 |
| PHP checkdate() — 날짜 유효성 검사 · 윤년 · 폼 입력 검증 완전 정리 (0) | 2026.07.10 |
| PHP time() — 유닉스 타임스탬프 · date() 연계 · 날짜 계산 완전 정리 (0) | 2026.07.10 |
왕진 블로그

댓글