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

JSP에서 시간대 설정하기 – fmt:setTimeZone 태그 사용법 완벽 정리

JSP에서 날짜와 시간을 다룰 때 서버의 기본 시간대가 아닌 특정 시간대를 적용해야 하는 경우가 자주 발생합니다. 이럴 때 유용하게 사용할 수 있는 것이 JSTL(JSP Standard Tag Library)의 <fmt:setTimeZone> 태그입니다. 이 태그는 지정한 시간대 객체를 스코프 변수(scope variable)에 저장하거나, 별도의 변수를 지정하지 않으면 해당 페이지 이후의 날짜 포맷 처리에 기본 시간대로 적용합니다.

fmt:setTimeZone 태그의 주요 속성

<fmt:setTimeZone> 태그는 아래와 같은 속성을 제공합니다.

속성설명필수 여부기본값
value스코프 변수 또는 설정(configuration) 변수로 노출할 시간대 값필수없음
var새로운 시간대를 저장할 변수의 이름선택기본 시간대를 대체
scope시간대를 저장할 변수의 유효 범위(scope)선택page

사용 예제

다음 예제는 현재 시간대의 날짜·시간을 출력한 후, 시간대를 GMT-8로 변경하여 다시 출력하는 코드입니다.

<%@ 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:setTimeZone Tag</title>
   </head>
   <body>
      <c:set var = "now" value = "<%=new java.util.Date()%>" />
      <p>현재 시간대의 날짜: <fmt:formatDate value = "${now}" type = "both" timeStyle = "long" dateStyle = "long" /></p>
      <p>시간대를 GMT-8로 변경</p>
      <fmt:setTimeZone value = "GMT-8" />
      <p>변경된 시간대의 날짜: <fmt:formatDate value = "${now}" type = "both" timeStyle = "long" dateStyle = "long" /></p>
   </body>
</html>

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Date in Current Zone: 23 September 2010 15:21:37 GST
Change Time Zone to GMT-8
Date in Changed Zone: 23 September 2010 03:21:37 GMT-08:00

예제 해설

먼저 <c:set> 태그로 현재 시각을 담은 now 변수를 생성하고, <fmt:formatDate> 태그로 현재 시간대 기준의 날짜와 시간을 출력합니다. 이후 <fmt:setTimeZone value = "GMT-8" />를 호출하면 이후 페이지 전체의 기본 시간대가 GMT-8로 변경되며, 같은 now 값을 다시 포맷하면 변경된 시간대 기준으로 시간이 표시됩니다. 만약 특정 영역에만 시간대를 적용하고 싶다면 var 속성으로 변수를 지정하고, 필요한 위치에서 <fmt:timeZone> 태그로 감싸 사용하면 됩니다.