SimpleDateFormat

SimpleDateFormat (로케일 민감 날짜 형식화·파싱)

로케일 민감한 방식으로 날짜를 형식화(format)하고 파싱(parse)하는 구체 클래스예요. 형식화(날짜 → 텍스트), 파싱(텍스트 → 날짜), 정규화(normalization)를 허용해요.

출처: Java API Reference

본문

SimpleDateFormat은 날짜·시간 형식화를 위해 원하는 사용자 정의 패턴을 정해서 시작할 수 있게 해줘요. 그러나 DateFormatgetTimeInstance, getDateInstance, getDateTimeInstance로 날짜·시간 포매터를 만드는 것이 권장돼요. 이 클래스 메서드들은 각각 기본 형식 패턴으로 초기화된 날짜·시간 포매터를 반환할 수 있어요. 원하면 applyPattern 메서드들로 형식 패턴을 수정할 수 있어요.

날짜·시간 패턴

날짜·시간 형식은 날짜·시간 패턴 문자열로 지정돼요. 패턴 문자열 안에서 인용되지 않은 'A''Z'와 'a''z' 문자는 날짜·시간 문자열의 구성 요소를 나타내는 패턴 문자로 해석돼요. 텍스트는 작은따옴표(')로 인용해 해석을 피할 수 있고, "''"는 단일 작은따옴표를 나타내요. 다른 모든 문자는 해석되지 않고, 형식화 중에는 출력 문자열로 복사되거나 파싱 중에는 입력 문자열과 비교돼요.

정의된 패턴 문자는 다음과 같아요('A''Z'와 'a''z'의 다른 모든 문자는 예약됨).

문자 날짜·시간 구성 요소 표현
G Era 지정자 Text AD
y 연도 Year 1996; 96
Y 주 기반 연도 Year 2009; 09
M 연의 월(문맥 민감) Month July; Jul; 07
L 연의 월(독립형) Month July; Jul; 07
w 연의 주 Number 27
W 월의 주 Number 2
D 연의 일 Number 189
d 월의 일 Number 10
F 월의 요일 수 Number 2
E 주의 요일 이름 Text Tuesday; Tue
u 주의 일 번호 (1=월요일 ... 7=일요일) Number 1
a Am/pm 표시 Text PM
H 하루의 시 (0-23) Number 0
k 하루의 시 (1-24) Number 24
K am/pm의 시 (0-11) Number 0
h am/pm의 시 (1-12) Number 12
m Number 30
s Number 55
S 밀리초 Number 978
z 시간대 General time zone Pacific Standard Time; PST; GMT-08:00
Z 시간대 RFC 822 time zone -0800
X 시간대 ISO 8601 time zone -08; -0800; -08:00
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2026-09-22 14:30:00");
String formatted = sdf.format(new Date());

패턴이 유효하지 않으면 IllegalArgumentException이, 파싱이 실패하면 ParseException이 던져질 수 있어요. 이 클래스는 로케일 민감하므로 Date 값이 항상 유효한지, 그리고 Calendar가 단순화했는지(timezone) 고려해야 해요.

더 알아보기 (Learn more)

Java 공식 API