본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP date() — 타임스탬프를 날짜 문자열로 포맷 · 포맷 문자 표 완전 정리

by 왕진 2026. 7. 11.
반응형

 

 

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학습, 웹개발, 티스토리
반응형

댓글