Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

วิธีจัดรูปแบบวันที่ใน JSP ด้วย <fmt:formatDate>

Tag <fmt:formatDate> จัดรูปแบบ Date object ให้เป็น String ตาม pattern/style/locale ที่ต้องการ

Attributes

AttributeคำอธิบายRequiredDefault
valueDate object ที่จะ formatYes-
typeDATE, TIME, BOTHNodate
dateStyleFULL, LONG, MEDIUM, SHORT, DEFAULTNodefault
timeStyleFULL, LONG, MEDIUM, SHORT, DEFAULTNodefault
patternCustom pattern (SimpleDateFormat)No-
timeZoneTime zone สำหรับแสดงผลNoDefault
varVariable เก็บ formatted stringNoPrint to page
scopeScope ของ varNopage

Pattern Reference

CodeMeaningExample
yYear2024
MMonth06, Jun, June
dDay of month20
EDay of weekThu, Thursday
HHour (0-23)14
hHour (1-12)02
mMinute30
sSecond59
aAM/PMPM
zTime zoneICT, GMT+07:00
'text'Literal textat

ตัวอย่างหลากหลายรูปแบบ

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<html>
<body>
    <c:set var="now" value="${new java.util.Date()}"/>
    
    <p>Time only: <fmt:formatDate type="time" value="${now}"/></p>
    <p>Date only: <fmt:formatDate type="date" value="${now}"/></p>
    <p>Date & Time: <fmt:formatDate type="both" value="${now}"/></p>
    <p>Short: <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}"/></p>
    <p>Medium: <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}"/></p>
    <p>Long: <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}"/></p>
    <p>Custom: <fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${now}"/></p>
    <p>Thai Locale: <fmt:formatDate type="both" dateStyle="full" timeStyle="short" value="${now}"/></p>
</body>
</html>

ผลลัพธ์ตัวอย่าง

Time only: 14:27:18
Date only: 23-Sep-2010
Date & Time: 23-Sep-2010 14:27:18
Short: 23/09/10 14:27
Medium: 23-Sep-2010 14:27:18
Long: 23 September 2010 14:27:18 ICT
Custom: 2010-09-23 14:27:18
Thai Locale: วันพุธที่ 23 กันยายน 2553 14:27

Java 8+ Recommendation

ใน Controller/Service ใช้ java.time.LocalDateTime + DateTimeFormatter แล้วส่ง formatted string มา JSP แค่แสดง (Scriptless JSP)