JSTL에서 날짜 문자열을 실제 Date 객체로 변환하려면 <fmt:parseDate> 태그를 사용합니다. 이 태그는 지정한 형식에 맞는 날짜 표현을 해석하여, 그 결과를 변수에 저장하거나 페이지에 바로 출력할 수 있게 해줍니다.
주요 속성
<fmt:parseDate> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 읽어들일(파싱할) 날짜 값 | 아니요 | 태그 본문(Body) |
| type | DATE, TIME 또는 BOTH 중 선택 | 아니요 | date |
| dateStyle | FULL, LONG, MEDIUM, SHORT 또는 DEFAULT | 아니요 | DEFAULT |
| timeStyle | FULL, LONG, MEDIUM, SHORT 또는 DEFAULT | 아니요 | DEFAULT |
| parseLocale | 날짜를 파싱할 때 사용할 로케일(locale) | 아니요 | 기본 로케일 |
| pattern | 사용자 지정 파싱 패턴 | 아니요 | 없음 |
| timeZone | 파싱된 날짜에 적용할 시간대 | 아니요 | 기본 시간대 |
| var | 파싱된 날짜를 저장할 변수 이름 | 아니요 | 페이지에 직접 출력 |
| scope | 저장된 변수의 유효 범위(scope) | 아니요 | page |
pattern 속성은 <fmt:formatDate> 태그의 pattern 속성과 동일한 방식으로 작동합니다. 다만 포매팅(formatting)과 달리, 파싱(parsing) 시에는 pattern 속성이 파서가 입력값을 어떤 형식으로 기대해야 하는지를 지정한다는 점이 다릅니다.
사용 예제
<%@ 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:parseDate Tag</title>
</head>
<body>
<h3>Date Parsing:</h3>
<c:set var = "now" value = "20-10-2010" />
<fmt:parseDate value = "${now}" var = "parsedEmpDate" pattern = "dd-MM-yyyy" />
<p>Parsed Date: <c:out value = "${parsedEmpDate}" /></p>
</body>
</html>
위 예제의 동작 순서를 살펴보면 다음과 같습니다.
c:set태그로now변수에 문자열"20-10-2010"을 저장합니다.fmt:parseDate태그가dd-MM-yyyy패턴에 맞춰 이 문자열을 해석하고, 결과를parsedEmpDate변수에 담습니다.c:out태그로 파싱된 날짜 객체를 화면에 출력합니다.
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Date Parsing: Parsed Date: Wed Oct 20 00:00:00 GST 2010