JSTL(JSP Standard Tag Library)에서 제공하는 <fmt:formatDate> 태그는 다양한 방식으로 날짜와 시간을 원하는 형식으로 출력할 수 있게 해주는 강력한 도구입니다. 이 태그를 활용하면 복잡한 자바 코드 없이도 JSP 페이지에서 손쉽게 날짜 형식을 지정할 수 있습니다.
<fmt:formatDate> 태그의 주요 속성
<fmt:formatDate> 태그는 다음과 같은 속성들을 지원합니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 표시할 날짜 값 | 필수 | 없음 |
| type | DATE(날짜), TIME(시간), BOTH(둘 다) 중 선택 | 선택 | date |
| dateStyle | FULL, LONG, MEDIUM, SHORT, DEFAULT 중 선택 | 선택 | default |
| timeStyle | FULL, LONG, MEDIUM, SHORT, DEFAULT 중 선택 | 선택 | default |
| pattern | 사용자 지정 형식 패턴 | 선택 | 없음 |
| timeZone | 표시할 날짜의 시간대 | 선택 | 기본 시간대 |
| var | 형식화된 날짜를 저장할 변수명 | 선택 | 페이지에 바로 출력 |
| scope | 형식화된 날짜를 저장할 변수의 범위 | 선택 | page |
pattern 속성으로 정밀한 날짜 형식 지정하기
pattern 속성을 사용하면 날짜와 시간을 훨씬 더 세밀하게 제어할 수 있습니다. 패턴에 사용되는 주요 코드는 다음과 같습니다.
| 코드 | 의미 | 예시 |
|---|---|---|
| G | 연대 표시 | AD |
| y | 연도 | 2002 |
| M | 월 | April & 04 |
| d | 일(월 기준) | 20 |
| h | 시간(12시간제) | 12 |
| H | 시간(24시간제) | 0 |
| m | 분 | 45 |
| s | 초 | 52 |
| S | 밀리초 | 970 |
| E | 요일 | Tuesday |
| D | 연중 몇 번째 날 | 180 |
| F | 월에서 몇 번째 해당 요일인지 | 2 (해당 월의 두 번째 수요일) |
| w | 연중 몇 번째 주 | 27 |
| W | 월중 몇 번째 주 | 2 |
| a | 오전/오후 표시 | PM |
| k | 시간(1~24) | 24 |
| K | 시간(0~11) | 0 |
| z | 시간대 | Central Standard Time |
| ' | 텍스트 이스케이프 처리 | - |
| '' | 작은따옴표 출력 | - |
사용 예제
다음은 <fmt:formatDate> 태그를 다양하게 활용한 JSP 예제 코드입니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "https://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:formatDate Tag</title>
</head>
<body>
<h3>날짜 형식:</h3>
<c:set var = "now" value = "<% = new java.util.Date()%>" />
<p>Formatted Date (1): <fmt:formatDate type = "time" value = "${now}" /></p>
<p>Formatted Date (2): <fmt:formatDate type = "date" value = "${now}" /></p>
<p>Formatted Date (3): <fmt:formatDate type = "both" value = "${now}" /></p>
<p>Formatted Date (4): <fmt:formatDate type = "both" dateStyle = "short" timeStyle = "short" value = "${now}" /></p>
<p>Formatted Date (5): <fmt:formatDate type = "both" dateStyle = "medium" timeStyle = "medium" value = "${now}" /></p>
<p>Formatted Date (6): <fmt:formatDate type = "both" dateStyle = "long" timeStyle = "long" value = "${now}" /></p>
<p>Formatted Date (7): <fmt:formatDate pattern = "yyyy-MM-dd" value = "${now}" /></p>
</body>
</html>위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
날짜 형식: Formatted Date (1): 14:27:18 Formatted Date (2): 23-Sep-2010 Formatted Date (3): 23-Sep-2010 14:27:18 Formatted Date (4): 23/09/10 14:27 Formatted Date (5): 23-Sep-2010 14:27:18 Formatted Date (6): 23 September 2010 14:27:18 GST Formatted Date (7): 2010-09-23
정리
<fmt:formatDate> 태그는 type, dateStyle, timeStyle 속성만으로도 기본적인 날짜 형식을 지정할 수 있으며, pattern 속성을 조합하면 yyyy-MM-dd처럼 원하는 형태로 자유롭게 커스터마이징할 수 있습니다. 실무에서는 국제화(i18n) 처리나 사용자 맞춤형 화면 구성 시 특히 유용하게 활용됩니다.