Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP에서 시간대를 다루는 방법: fmt:timeZone 태그 활용 가이드

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+1222-Sep-2010 23:09:09
Etc/GMT+1123-Sep-2010 00:09:09

참고 사항

특정 영역 전체가 아니라 개별 태그에만 시간대를 적용하고 싶다면, fmt:formatDate 태그의 timeZone 속성을 직접 사용하는 방법도 있습니다. 또한 애플리케이션 전체의 기본 시간대를 설정하려면 <fmt:setTimeZone> 태그를 활용할 수 있으며, 이는 설정 이후의 모든 JSTL 포매팅 태그에 영향을 줍니다.