[應用篇]第五篇 JSTL之fmt標簽日期和數字格式化


  fmt標簽個人用的比較少,但是我還是在這里簡單的留一下筆記,也是算是學習了一下!這樣方便你們課設的時候能用的上,要學會進步的學習,不要停留!

  引入該標簽庫的方法為:  

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

  這里提供了很多的內容,我這里只是介紹關於數字和日期格式化的內容

  formatNumber標簽、formatData標簽、parseNumber標簽、parseDate標簽、timeZone標簽、setTimeZone標簽

  1.<frm:formatNumber/>標簽

  該標簽依據特定的區域將數字改變為不同的格式來顯示。

  

【語法1】:
<frm:formatNumber value=”被格式化的數”
    [type=”number|currency|percent”]
    [pattern=”pattern”]
    [currencyCode=”code”]
    [currencySymbol=”symbol”]
    [groupingUsed=”true|false”]
    [maxIntergerDigits=”maxDigits”]
    [minIntergerDigits=”minDigits”]
    [maxFractionDigits=”maxDigits”]
    [minFractionDigits=”minDigits”]
    [var=”name”]
    [scope=page|request|session|application]
/>
還有一種是對標簽喲!

1.<fmt:formatNumber>標簽參數說明:

名稱 類型 EL 類型 必須 默認值
value 要格式化的數據 String
type 指定類型(單位、貨幣、百分比等)見附表A 是  String number
pattern 格式化的數據樣式 String
currencyCode 貨幣單位代碼 String
cuttencySymbol 貨幣符號($、¥) String
groupingUsed 是否對整數部分進行分組如(9,999) boolean true
maxIntergerDigits 整數部分最對顯示多少位數 int
minIntergerDigits 整數部分最少顯示多少位 int
maxFractionDigits 小數部分最多顯示多少位 int
minFractionDigits 小數部分最少顯示多少位 int
var 存儲格式化后的數據 String
scope var的JSP范圍 String page

附表A,關於type的屬性值介紹

類型 說明 示例
number 數字格式 0.8
currency 當地貨幣 ¥0.80
percent 百分比格式 80%

 

什么東西,都需要代碼才能看到真相,所以嘍,我們寫一下代碼,

LOOK:實現了對數字的格式化、貨幣的格式、貨幣的格式化。使用<frm:formatNumber>的各種屬性的設定。

<table border=1 cellpadding="0" cellspacing="0" align="center">
            <tr align="center">
                <td width="100">類型</td>
                <td width="100">使用數據</td>
                <td width="100">結果</td>
                <td width="300">說明</td>
            </tr>
            <tr>
                <td>數字格式化</td>
                <td>108.75</td>
                <td>
                    <fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber>
                </td>
                <td>
                    使用pattern可以定義顯示的樣式。本例設定為###.#小數部分將使用四舍五入法。
                </td>
            </tr>
            <tr>

                <td>數字格式化</td>
                <td>9557</td>
                <td>
                    <fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber>
                </td>
                <td>
                    使用科學計數法。
                </td>
            </tr>
            <tr>
                <td>數字格式化</td>
                <td>9557</td>
                <td>
                    <fmt:formatNumber type="number">9557</fmt:formatNumber>
                </td>
                <td>
                    使用默認分組。
                </td>
            </tr>

            <tr>
                <td>數字格式化</td>
                <td>9557</td>
                <td>
                    <fmt:formatNumber type="number" groupingUsed="false">9557</fmt:formatNumber>
                </td>
                <td>
                    不使用分組。
                </td>
            </tr>
            <tr>
                <td>數字格式化</td>
                <td>9557</td>
                <td>
                    <fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber>
                </td>
                <td>
                    使用位數限定,根據指定的位數顯示,其他數字忽略。例如:9不被顯示。
                </td>
            </tr>
            <tr>
                <td>百分比格式化</td>
                <td>0.98</td>
                <td>
                    <fmt:formatNumber type="percent">0.98</fmt:formatNumber>
                </td>
                <td>
                    用百分比形式顯示一個數據。
                </td>
            </tr>
            <tr>
                <td>貨幣格式化</td>
                <td>188.88</td>
                <td>
                    <fmt:formatNumber type="currency">188.8</fmt:formatNumber>
                </td>
                <td>
                    將一個數據轉化為貨幣形式輸出。
                </td>
            </tr>

            <tr>
                <td>存儲數據</td>
                <td>188.88</td>
                <td>
                    <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
                    ${money}
                </td>
                <td>
                    存儲的money的值為${money}
                </td>
            </tr>
        </table>
<%--1)從應用角度可以把屬性分為三類:數字格式化、貨幣格式化、百分比格式化。使用type指定類型。
(2)應用於數字格式化的屬性有:partten屬性、maxIntegerDigits屬性、minIntegerDigits屬性、maxFractionDigits屬性和minFactionDigits屬性。其中partten屬性在設定格式化樣式時會比較准確如:四舍五入、科學計數法的使用。而使用maIntegerDirgits等屬性時,只把設定位數以外的數字舍去。
(3)貨幣格式化可以使用數字格式化的所有屬性。如果有必要建議使用partten屬性。currencyCode屬性和currencySymbol只用於貨幣格式化。
(4)百分比格式化使用到的屬性為type屬性、partten屬性,設定type屬性的類型為percent即可。
(5)使用var屬性時,會將格式化后的值存在JSP的某個范圍內(一個String類型的字符串包括符號等)。<frm:forNumber>將不再輸出格式化后的值可以使用EL表達式輸出。
(6)通用屬性:type屬性、partten屬性、var屬性和scope屬性。
--%>

 

2.<frm:parseNumber>標簽

將格式化后的數字、貨幣、百分比都轉化為數字類型。
【語法1】:
<fmt:parseNumber value="number"       
[type
=”number|currency|percent”] [pattern=”pattern”] [parseLocale=”locale”] [intergerOnly=”true|false”] [scope=”page|request|session|application”] />
還有一種是對標簽喲!
還有一種是對標簽喲!

<fmt:parseNumber>標簽參數說明:

名稱 說明 EL 類型 必須 默認
value 被解析的字符串 String
type 指定單位(數字、貨幣、百分比) String number
pattern 格式樣式 String
parseLocale 用來替代默認區域的設定 StString/java.util.Locale 默認本地樣式
var 存儲已經格式化的數據 String
scope var變量的作用域 String page

<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆運算。相應的參數和類型的配置和使用<fmt:formatNumber>格式化時相同。

【示例代碼】:實現了從字符串中提取數據,並用合適的數據類型進行存儲(浮點性、整型等)。可以對轉換后的數據進行加法運算

<!-- 准備的數據為 -->
        <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
            <ul>
                <li>
                    格式化后的數據為:${money}
                </li>
                <fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
                <li>
                    解析格式化后的數據為:${money}
                </li>
                <li>
                    解析可以對格式化的后的數據進行運算:${money+200}
                </li>
                <li>
                    解析對百分比進行格式化98%為:
                    <fmt:parseNumber type="percent">98%</fmt:parseNumber>
                </li>
            </ul>
        <%--1)首先使用<fmt:formatNumber>將188.8轉換為字符串¥188.8並在page范圍內存儲一個String類型的變量,變量名為money。
        (2)使用<fmt:parseNumber>將¥188.8轉化為浮點型的數據188.8並賦值為變量money,則變量money轉變為一個浮點型的值188.8,對188.8進行加運算。
        (3)直接對一個百分比數98%進行轉化。
         --%>

3.<fmt:formatDate>標簽:該標簽主要用來格式化日期和時間

【語法】:

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

<fmt:formatDate>標簽屬性說明:

屬性名 說明 EL 類型 必須 默認值
value 將要格式化的日期對象 Java.util.Date
type 顯示的部分(日期、時間或者兩者)附錄表B String date
partten 格式化的樣式。 String
dateStyle 設定日期的顯示方式 String default
timeStyle 設定時間的顯示方式 String default
timeZone 設定使用的時區 String 當地所用時區
var 存儲已格式化的日期或時間 String
scope 指定var存儲的JSP范圍 String

 

附錄表B:type屬性參數說明:

參數名 說明
time 只顯示時間
date 只顯示日期
both 顯示日期和時間

【示例程序】:實現了對日期的格式化,使用了type、dateStyle、timeStyle等屬性。

<%
        pageContext.setAttribute("date",new Date());
%>
    
        <fmt:formatDate value="${date}"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both" dateStyle="default"
            timeStyle="default"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both" dateStyle="short"
            timeStyle="short"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both" dateStyle="long"
            timeStyle="long"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both" dateStyle="full"
            timeStyle="full"></fmt:formatDate>
        <br>

        <fmt:formatDate value="${date}" type="both" dateStyle="full"
            timeStyle="full"></fmt:formatDate>
        <br>
        <%--
        1)對日期對象進行格式化時${date}是一個日期對象,如果給value設的值為String時程序會報錯。

        2)設置type為both時,將顯示日期和時間,同時示例中依次改變dateStyle和timeStyle的值作為比較。
        --%>

 

4.<fmt:parseDate>標簽:<fmt:parseDate>標簽主要將字符串類型的時間或日期轉化為時間或日期對象

<fmt:parseDate 
         [type=”time|date|both”]
         [pattern=”pattern”]
         [parseLocale=”locale”]
         [dateStyle=”default|short|medium|long|full”]
         [timeStyle=”default|short|medium|long|full”]
         [timeZone=”timezone”]
         [var=”name”]
         [scope=”page|request|session|application”]
> 
Date
</fmt:parseDate>

<fmt:parseData>標簽屬性說明:

屬性名 說明 EL 類型 必須 默認值
value 將要格式化的日期時間 String
type 字符串的類型(日期、時間或全部) String date
pattern 字符串使用的時間樣式 String
parseLocale 取代默認地區設定 String 默認地區
dateStyle 字符串使用的日期顯示方式 String default
timeStyle 字符串使用的時間顯示格式 String default
timeZone 使用的時區 String 當地區時
var 使用var定義的名字保存對象 String
scope var的JSP范圍 String page

【示例代碼】:實現了以下功能:

  首先,使用了<fmt:formatDate>把一個日期對象格式化成一個日期的字符串,並把該字符串以參數名為a存儲page范圍內。

  其次,使用<fmt:parseDate>方法把a的值(字符串)格式化成一個Date並以參數名為b存儲在page范圍內。

  最后,使用Java腳本證明生成的b為對象。

<%
            pageContext.setAttribute("date", new Date());
%>

        <fmt:formatDate value="${date}" var="a" type="both" dateStyle="full"
            timeStyle="full"></fmt:formatDate>

        <fmt:parseDate var="b" type="both" dateStyle="full" timeStyle="full">
            ${a}
        </fmt:parseDate>
        <%
            out.println(pageContext.getAttribute("b").toString());
            out.println("<br>");
            out.println(pageContext.getAttribute("b").hashCode());
        %>
<%--

(1)使用<fmt:formatDate>把日期對象格式化成字符串。
(2)使用<fmt:parseDate>把字符串對象轉化為日期對象,注意同(1)中的參數對比,可以發現兩者是一個互逆的過程。
(3)使用Java腳本進行測試Date對象的toString()方法可以輸出時間字符串。hashCode()可以得到一個對象的hashCode。該方法只能應用於對象,因此可以證明得到的是一個日期對象。
--%>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM