JSTL(JSP Standard Tag Library)의 <fmt:timeZone> 태그는 본문(body) 내부에 포함된 모든 태그가 사용할 시간대(time zone)를 지정하는 데 사용됩니다. 여러 지역의 시간을 동시에 표시해야 하는 국제화(i18n) 웹 애플리케이션에서 특히 유용합니다.
fmt:timeZone 태그의 속성
<fmt:timeZone> 태그는 아래와 같은 속성을 제공합니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 본문 내부에 적용할 시간대 | 필수 | 없음 |
사용 예제
다음 예제는 현재 시각을 구한 뒤, Java에서 제공하는 모든 시간대 ID를 순회하면서 각 시간대별로 날짜와 시간을 출력하는 코드입니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
<html>
<head>
<title>JSTL fmt:timeZone Tag</title>
</head>
<body>
<c:set var = "now" value = "<% = new java.util.Date()%>" />
<table border = "1" width = "100%">
<tr>
<td width = "100%" colspan = "2" bgcolor = "#0000FF">
<p align = "center">
<b>
<font color = "#FFFFFF" size = "4">Formatting:
<fmt:formatDate value = "${now}" type = "both" timeStyle = "long" dateStyle = "long" />
</font>
</b>
</p>
</td>
</tr>
<c:forEach var = "zone" items = "<% = java.util.TimeZone.getAvailableIDs()%>">
<tr>
<td width = "51%">
<c:out value = "${zone}" />
</td>
<td width = "49%">
<fmt:timeZone value = "${zone}">
<fmt:formatDate value = "${now}" timeZone = "${zn}" type = "both" />
</fmt:timeZone>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>코드 설명
- c:set: 현재 시각을 나타내는
java.util.Date객체를now변수에 저장합니다. - c:forEach:
java.util.TimeZone.getAvailableIDs()가 반환하는 모든 시간대 ID를 하나씩 순회합니다. - fmt:timeZone: 각 시간대 ID를
value속성으로 지정하여, 그 본문 안에서 실행되는fmt:formatDate가 해당 시간대 기준으로 날짜와 시간을 출력하도록 합니다.
실행 결과
위 코드를 실행하면 서버의 기본 시간대로 포맷된 현재 시각이 상단에 표시되고, 그 아래에 각 시간대별로 변환된 날짜와 시간이 목록 형태로 출력됩니다.
Formatting: 23 September 2010 15:09:09 GST | |
| Etc/GMT+12 | 22-Sep-2010 23:09:09 |
| Etc/GMT+11 | 23-Sep-2010 00:09:09 |
참고 사항
특정 영역 전체가 아니라 개별 태그에만 시간대를 적용하고 싶다면, fmt:formatDate 태그의 timeZone 속성을 직접 사용하는 방법도 있습니다. 또한 애플리케이션 전체의 기본 시간대를 설정하려면 <fmt:setTimeZone> 태그를 활용할 수 있으며, 이는 설정 이후의 모든 JSTL 포매팅 태그에 영향을 줍니다.