JSP JSTL <fmt:formatDate>標籤:格式化時間

2020-07-16 10:04:57
<fmt:formatDate> 標籤可以把字串型別的數位解析成數位型別的數值,使其可以組合算術運算形成其他數值結果。

語法:

<fmt:formatDate value="date"
  [type="{time|date|both}"]
  [dateStyle="{default|short|medium|long|full}"]
  [timeStyle="{default|short|medium|long|full}"]
  [pattern="customPattern"]
  [timeZone="timeZone"]
  [var="varName"]
  [scope="{page|request|session|application}"]/>


<fmt:formatDate> 標籤各屬性的詳細介紹如表所示。

<fmt:formatDate>標籤屬性
屬性 型別 描述 參照 EL
value java.util.Date 將要格式化的日期物件 可以
type String 指定顯示日期物件的日期還是時間,可以兩者都顯示,它的取值可選time(時間)、date(日期)和both(兩者)均有 可以
pattern String 模式字串 可以
dateStyle String 指定日期的顯示方式 可以
timeStyle String 指定時間的顯示方式 可以
timeZone String,java.util.TimeZone 設定時區 可以
var String 儲存格式化後日期物件的格式 不可以
scope String 變數的作用範圍 不可以

範例1

本範例應用 <fmt:formatDate> 標籤將當前時間格式化成不同的時間格式,關鍵程式碼如下:
<%@page import="java.util.Date"%>
  <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <%request.setAttribute("date",new Date());%>
      <!--顯示2008-11-29 11:28:12-->
      <fmt:formatDate value="${date}" type="both"/>
      <!--顯示2008年11月29日星期六上午11時28分12秒CST-->
      <fmt:formatDate value="${date}" dateStyle="full" timeStyle="full" type="both"/>
      <fmt:formatDate value="${date}" type="date"/><!--顯示2008-11-29-->
      <!--顯示2008年11月29日-->
      <fmt:formatDate value="${date}" dateStyle="long" type="date"/>
      <!--顯示08-11-29-->
      <fmt:formatDate value="${date}" dateStyle="short" type="date"/>
      <fmt:formatDate value="${date}" type="time"/><!--顯示11:28:12-->
      <!--顯示午11時28分12秒-->
      <fmt:formatDate value="${date}" timeStyle="long" type="time"/>
      <!--顯示上午11:28-->
      <fmt:formatDate value="${date}" timeStyle="short" type="time"/>

範例2

本範例以北京時間 2008-11-29 11:35:19 為例,設定 timeZone 屬性,顯示美國太平洋時區的時間,關鍵程式碼如下:
<%@page import="java.util.Date"%>
  <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <%request.setAttribute("date",new Date());%>
      <!--顯示2008-11-28 19:35:19-->
      <fmt:formatDate value="${date}" type="both" timeZone="America/Los_Angeles"/>
      <!--顯示2008-11-29 11:35:19-->
      <fmt:formatDate value="${date}" type="both"/>

說明 America/Los_Angeles 表示美國太平洋時區。

範例3

本範例應用 <fmt:formatDate> 標籤,在標籤中按照自定義的格式輸出當前日期時間,關鍵程式碼如下:
<%@page import="java.util.Date"%>
  <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <%request.setAttribute("date",new Date());%>
      <!--顯示20081129 114852-->
      <fmt:formatDate value="${date}" type="both" pattern="yyyyMMdd HHmmss"/>
      <!--顯示2008/11/29-->
      <fmt:formatDate value="${date}" type="date" pattern="yyyy/MM/dd"/>

典型應用

本範例使用 <fmt:formatDate> 標籤對日期格式化,將實現對所有地區(即不同時區和地點)的日期時間的格式轉換。

使用 <fmt:formatDate> 標籤的 value 屬性設定要格式化的日期,最後使用 <c:forEach> 標籤把所有資訊疊代到頁面中,關鍵程式碼如下:
<div align="center">日期格式化標籤</div>
<%
  Field[]field = Locale.class.getFields();
  List<Locale>localeList = new ArrayList<Locale>();
  for(int i=0;i<field.length;i++){
    if(field[i].getType().equals(Locale.class)){
      localeList.add((Locale)field[i].get(null));
    }
  }
  request.setAttribute("localeList",localeList);
%>
<table align="center">
  <tr>
    <td>地區縮寫</td>
執行結果如下: