Java 관련/JSTL, EL

[JSTL] 날짜 포맷 변경하기

Wings of Freedom 2021. 4. 5. 23:32

본인은 날짜 포맷을 2019-12-06 00:00:00 형식에서 2019-12-06 형식으로 변경하려고했다.

jstl로 변경했으며, 변경 방법이 다소 햇갈리기 때문에 아래와 같이 기재하려고한다.

우선 날짜 포맷을 변경하기 위하여 우리가 준비해야 할 것은 아래와 같다.

1. <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 태그 라이브러리추가

2. fmt:fmt:parseDate : String 형을 받아서 워하는 포멧으로 자료형을 Date 형태로 변경 시켜 준다.

** 여기서 중요할 부분은 현재 String형과 동일하게 기재해줘야함 아래 사진에 자세히 설명
3. fmt:formatDate : Date 형을 받아서 원하는 포멧으로 날짜 형태를 변경시켜 준다.

<fmt:parseDate value="${applDt}" var="dateFmt" pattern="yyyyMMdd"/> //String형 > Date형
<fmt:formatDate value="${dateFmt}" pattern="yyyy-MM-dd"/> // 원하는 포맷으로 변환

필자는 아래와 같이 taglib를 추가하였다.

그 다음 fmt:parseDate와 fmt:formDate로 Date형 변경 및 원하는 포맷으로 변경하였다.

이제 list 출력싱는 yyyy-MM-dd와 같이 출력이 되어야 한다.

그럼 한번 실행해보자

실행시 예상과 달리 아래와 같은 오류 메시지가 발생한다.

오류명을 확인해보면 value attribute can not be parsed라고 되어 있다.

해석을 하면 '값 속성이 문법적으로 분석되어질 수 없다.' 이다.

어디가 문제일까?

문제는 fmt:parseDate 부분이다. 

상단의 우측 사진을 보면 2019-12-06 00:00:00으로 패턴이 되어 있다.

그러므로 fmt:parseDate 패턴을 맞춰줘야 한다.

그럼 맞춰서 다시 한번 진행해보자.

 

패턴을 바꾸니 우리가 원하는 포맷으로 정상 출력되는 것을 확인할 수 있다.

그러니 위와 같은 오류가 발생하지 않기 위해서는 fmt:parseDate의 패턴을 현재 출력되는 패턴과 맞춰야 되니 이 점을 참고하여 사용하도록하자.

추가로 아래와 같은 식으로도 사용 가능하니 참고하도록하자!

 

출처 : namubada.net/125?category=778442