JSTL LocalDateTime format

By | 2023년 2월 21일
Table of Contents

JSTL LocalDateTime format

참조

LocalDateTime 을 제대로 format 해주는 라이브러리가 없기에 별도로 생성해 주어야 합니다.

아래에 커스텀 태그를 생성하는 방법을 정리합니다.

클래스 생성

public final class Dates {
    private Dates() {}

    public static String formatLocalDateTime(LocalDateTime localDateTime, String pattern) {
        if (localDateTime == null) {
            return "";
        }
        return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
    }
}

/WEB-INF/functions.tld

urifunction-class 를 적당히 수정해 줍니다.

<?xml version="1.0" encoding="UTF-8" ?>
<taglib
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>Custom_Functions</short-name>
    <uri>http://kr.pe.skyer9.warehouseweb/functions</uri>

    <function>
        <name>formatLocalDateTime</name>
        <function-class>kr.pe.skyer9.warehouseweb.core.Dates</function-class>
        <function-signature>java.lang.String formatLocalDateTime(java.time.LocalDateTime, java.lang.String)</function-signature>
    </function>
</taglib>

JSP

JSP 에서 아래와 같이 사용할 수 있습니다.

<%@taglib uri="http://kr.pe.skyer9.warehouseweb/functions" prefix="f" %>

${f:formatLocalDateTime(user.lastupdate, 'yyyy-MM-dd HH:mm:ss')}

LocalDateTime의 toString() 메서드 사용 시 00초가 사라지는 경우

시간이 2023-02-20 18:14:00 와 같이 끝이 00 초가 되는 경우,

toString() 에 의해 나오는 값이 2023-02-20 18:14 와 같이 끝에 00 초가 사라지는 문제가 있습니다.

위 커스텀 태그를 이용하면 이 문제도 같이 해결됩니다.

답글 남기기