JSTL 숫자 포맷팅 완벽 가이드



JSTL fmt 태그를 사용한 숫자, 날짜, 금액 포맷팅 방법입니다. 천 단위 콤마, 소수점, 통화 등 다양한 포맷을 다룹니다.



1. 기본 설정



<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


2. 숫자 포맷팅 (formatNumber)



<!-- 천 단위 콤마 -->
<fmt:formatNumber value="${price}" pattern="#,###"/>
<!-- 결과: 1,234,567 -->

<!-- 소수점 2자리 -->
<fmt:formatNumber value="${rate}" pattern="#,##0.00"/>
<!-- 결과: 1,234.56 -->

<!-- 퍼센트 -->
<fmt:formatNumber value="${percent}" type="percent"/>
<!-- 0.85 → 85% -->

<!-- 통화 -->
<fmt:formatNumber value="${amount}" type="currency" currencySymbol="₩"/>
<!-- 결과: ₩1,234,567 -->


3. 날짜 포맷팅 (formatDate)



<!-- 기본 날짜 -->
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd"/>
<!-- 결과: 2024-01-15 -->

<!-- 날짜 + 시간 -->
<fmt:formatDate value="${datetime}" pattern="yyyy-MM-dd HH:mm:ss"/>
<!-- 결과: 2024-01-15 14:30:25 -->

<!-- 한글 날짜 -->
<fmt:formatDate value="${date}" pattern="yyyy년 MM월 dd일 (E)"/>
<!-- 결과: 2024년 01월 15일 (월) -->

<!-- 시간만 -->
<fmt:formatDate value="${time}" pattern="a hh:mm"/>
<!-- 결과: 오후 02:30 -->


4. 문자열을 날짜로 파싱



<!-- 문자열 → 날짜 객체 -->
<fmt:parseDate value="2024-01-15" pattern="yyyy-MM-dd" var="parsedDate"/>
<fmt:formatDate value="${parsedDate}" pattern="yyyy년 MM월 dd일"/>

<!-- 숫자 파싱 -->
<fmt:parseNumber value="1,234,567" pattern="#,###" var="parsedNum"/>
결과: ${parsedNum}


5. 주요 패턴 문자

















문자의미예시
#숫자 (없으면 생략)#,### → 1,234
0숫자 (없으면 0)0000 → 0012
.소수점#.## → 12.34
,천 단위 구분#,### → 1,234
yyyy년도 4자리2024
MM월 2자리01
dd일 2자리15
HH시간 24시간14
hh시간 12시간02
mm30
ss25
E요일


6. 실전 예시



<!-- 주문 금액 표시 -->
<td><fmt:formatNumber value="${order.amount}" pattern="#,###"/>원</td>

<!-- 주문 일시 -->
<td><fmt:formatDate value="${order.orderDate}" pattern="yyyy.MM.dd HH:mm"/></td>

<!-- 할인율 -->
<span><fmt:formatNumber value="${item.discount}" type="percent" maxFractionDigits="0"/></span>

<!-- 상품 가격 (0원이면 무료) -->
<c:choose>
<c:when test="${product.price == 0}">무료</c:when>
<c:otherwise>
<fmt:formatNumber value="${product.price}" pattern="#,###"/>원
</c:otherwise>
</c:choose>


7. 로케일 설정



<!-- 한국어 로케일 -->
<fmt:setLocale value="ko_KR"/>

<!-- 미국 통화 -->
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${amount}" type="currency"/>
<!-- 결과: $1,234.56 -->