fmt標簽個人用的比較少抗碰,但是我還是在這里簡單的留一下筆記,也是算是學習了一下推汽!這樣方便你們課設的時候能用的上补疑,要學會進步的學習,不要停留歹撒!
不是不用,如果設計到數(shù)據(jù)的格式化,一定會使用!
引入該標簽庫的方法為:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
這里提供了很多的內(nèi)容莲组,我這里只是介紹關于數(shù)字和日期格式化的內(nèi)容:
- formatNumber標簽
- formatData標簽
- parseNumber標簽
- parseDate標簽
- timeZone標簽
- setTimeZone標簽
1. <fmt:formatNumber/> 標簽
作用:該標簽依據(jù)特定的區(qū)域將數(shù)字改變?yōu)椴煌母袷絹盹@示。
【語法】
<fmt:formatNumber value=”被格式化的數(shù)”
[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]
/>
<fmt:formatNumber/> 標簽參數(shù)說明:
名稱 | 類型 | EL | 類型 | 必須 | 默認值 |
---|---|---|---|---|---|
value | 要格式化的數(shù)據(jù) | 是 | String | 是 | 無 |
type | 指定類型(單位暖夭、貨幣锹杈、百分比等)見附表A | 是 | String | 否 | number |
pattern | 格式化的數(shù)據(jù)樣式 | 是 | String | 否 | 無 |
currencyCode | 貨幣單位代碼 | 是 | String | 否 | 無 |
cuttencySymbol | 貨幣符號($撵孤、¥) | 是 | String | 否 | 無 |
groupingUsed | 是否對整數(shù)部分進行分組如(9,999) | 是 | boolean | 是 | true |
maxIntergerDigits | 整數(shù)部分最對顯示多少位數(shù) | 是 | int | 否 | 無 |
minIntergerDigits | 整數(shù)部分最少顯示多少位 | 是 | int | 否 | 無 |
maxFractionDigits | 小數(shù)部分最多顯示多少位 | 是 | int | 否 | 無 |
minFractionDigits | 小數(shù)部分最少顯示多少位 | 是 | int | 否 | 無 |
var | 存儲格式化后的數(shù)據(jù) | 否 | String | 否 | 無 |
scope | var的JSP范圍 | 否 | String | 否 | page |
type屬性特別說明
類型 | 說明 | 示例 |
---|---|---|
number | 數(shù)字格式 | 0.8 |
currency | 當?shù)刎泿?/td> | ¥0.80 |
percent | 百分比格式 | 80% |
代碼示例: 實現(xiàn)了對數(shù)字的格式化竭望、貨幣的格式邪码、貨幣的格式化。使用 <fmt:formatNumber>
的各種屬性的設定咬清。
<table border=1 cellpadding="0" cellspacing="0" align="center">
<tr align="center">
<td width="100">類型</td>
<td width="100">使用數(shù)據(jù)</td>
<td width="100">結果</td>
<td width="300">說明</td>
</tr>
<tr>
<td>數(shù)字格式化</td>
<td>108.75</td>
<td>
<fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber>
</td>
<td>
使用pattern可以定義顯示的樣式闭专。本例設定為###.#小數(shù)部分將使用四舍五入法。
</td>
</tr>
<tr>
<td>數(shù)字格式化</td>
<td>9557</td>
<td>
<fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber>
</td>
<td>
使用科學計數(shù)法枫振。
</td>
</tr>
<tr>
<td>數(shù)字格式化</td>
<td>9557</td>
<td>
<fmt:formatNumber type="number">9557</fmt:formatNumber>
</td>
<td>
使用默認分組喻圃。
</td>
</tr>
<tr>
<td>數(shù)字格式化</td>
<td>9557</td>
<td>
<fmt:formatNumber type="number" groupingUsed="false">9557</fmt:formatNumber>
</td>
<td>
不使用分組。
</td>
</tr>
<tr>
<td>數(shù)字格式化</td>
<td>9557</td>
<td>
<fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber>
</td>
<td>
使用位數(shù)限定粪滤,根據(jù)指定的位數(shù)顯示斧拍,其他數(shù)字忽略。例如:9不被顯示杖小。
</td>
</tr>
<tr>
<td>百分比格式化</td>
<td>0.98</td>
<td>
<fmt:formatNumber type="percent">0.98</fmt:formatNumber>
</td>
<td>
用百分比形式顯示一個數(shù)據(jù)肆汹。
</td>
</tr>
<tr>
<td>貨幣格式化</td>
<td>188.88</td>
<td>
<fmt:formatNumber type="currency">188.8</fmt:formatNumber>
</td>
<td>
將一個數(shù)據(jù)轉化為貨幣形式輸出。
</td>
</tr>
<tr>
<td>存儲數(shù)據(jù)</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) 從應用角度可以把屬性分為三類:數(shù)字格式化予权、貨幣格式化昂勉、百分比格式化。使用type指定類型扫腺。
(2) 應用于數(shù)字格式化的屬性有:partten屬性岗照、maxIntegerDigits屬性、minIntegerDigits屬性笆环、maxFractionDigits屬性和minFactionDigits屬性攒至。其中partten屬性在設定格式化樣式時會比較準確如:四舍五入、科學計數(shù)法的使用躁劣。而使用maIntegerDirgits等屬性時迫吐,只把設定位數(shù)以外的數(shù)字舍去。
(3) 貨幣格式化可以使用數(shù)字格式化的所有屬性账忘。如果有必要建議使用partten屬性志膀。currencyCode屬性和currencySymbol只用于貨幣格式化。
(4) 百分比格式化使用到的屬性為type屬性鳖擒、partten屬性溉浙,設定type屬性的類型為percent即可。
(5) 使用var屬性時蒋荚,會將格式化后的值存在JSP的某個范圍內(nèi)(一個String類型的字符串包括符號等)放航。<fmt:forNumber>
將不再輸出格式化后的值可以使用EL表達式輸出。
(6) 通用屬性:type屬性圆裕、partten屬性广鳍、var屬性和scope屬性。
2.<fmt:parseNumber>標簽
作用: 將格式化后的數(shù)字吓妆、貨幣赊时、百分比都轉化為數(shù)字類型。
語法:
<fmt:parseNumber value="number"
[type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
/>
<fmt:parseNumber> 標簽參數(shù)說明:
名稱 | 說明 | EL | 類型 | 必須 | 默認 |
---|---|---|---|---|---|
value | 被解析的字符串 | 是 | String | 是 | 無 |
type | 指定單位(數(shù)字行拢、貨幣祖秒、百分比) | 是 | String | 是 | number |
pattern | 格式樣式 | 是 | String | 否 | 無 |
parseLocale | 用來替代默認區(qū)域的設定 | 是 | StString/java.util.Locale | 是 | 默認本地樣式 |
var | 存儲已經(jīng)格式化的數(shù)據(jù) | 否 | String | 否 | 無 |
scope | var變量的作用域 | 是 | String | 是 | page |
注意: <fmt:parseNumber>可以看作是<fmt:formatNumber>的逆運算
相應的參數(shù)和類型的配置和使用 <fmt:formatNumber>
格式化時相同。
代碼示例: 實現(xiàn)了從字符串中提取數(shù)據(jù)舟奠,并用合適的數(shù)據(jù)類型進行存儲(浮點性竭缝、整型等)≌犹保可以對轉換后的數(shù)據(jù)進行加法運算
<!-- 準備的數(shù)據(jù)為 -->
<fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
<ul>
<li>
格式化后的數(shù)據(jù)為:${money}
</li>
<fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
<li>
解析格式化后的數(shù)據(jù)為:${money}
</li>
<li>
解析可以對格式化的后的數(shù)據(jù)進行運算:${money+200}
</li>
<li>
解析對百分比進行格式化98%為:
<fmt:parseNumber type="percent">98%</fmt:parseNumber>
</li>
</ul>
說明:
(1) 首先使用<fmt:formatNumber>
將188.8轉換為字符串¥188.8并在page范圍內(nèi)存儲一個String類型的變量抬纸,變量名為money。
(2) 使用<fmt:parseNumber>
將¥188.8轉化為浮點型的數(shù)據(jù)188.8并賦值為變量money耿戚,則變量money轉變?yōu)橐粋€浮點型的值188.8湿故,對188.8進行加運算。
(3) 直接對一個百分比數(shù)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> 標簽參數(shù)說明:
屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
---|---|---|---|---|---|
value | 將要格式化的日期對象 | 是 | Java.util.Date | 是 | 無 |
type | 顯示的部分(日期坛猪、時間或者兩者)附錄表B | 是 | String | 否 | date |
partten | 格式化的樣式。 | 是 | String | 否 | 無 |
dateStyle | 設定日期的顯示方式 | 是 | String | 否 | default |
timeStyle | 設定時間的顯示方式 | 是 | String | 否 | default |
timeZone | 設定使用的時區(qū) | 是 | String | 否 | 當?shù)厮脮r區(qū) |
var | 存儲已格式化的日期或時間 | 否 | String | 否 | 無 |
scope | 指定var存儲的JSP范圍 | 否 | String | 否 | 無 |
type屬性參數(shù)說明:
參數(shù)名 | 說明 |
---|---|
time | 只顯示時間 |
date | 只顯示日期 |
both | 顯示日期和時間 |
代碼示例: 實現(xiàn)了對日期的格式化皂股,使用了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
[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:parseDate> 標簽參數(shù)說明:
屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
---|---|---|---|---|---|
value | 將要格式化的日期時間 | 是 | String | 是 | 無 |
type | 字符串的類型(日期槐秧、時間或全部) | 是 | String | 是 | date |
pattern | 字符串使用的時間樣式 | 是 | String | 是 | 無 |
parseLocale | 取代默認地區(qū)設定 | 是 | String | 是 | 默認地區(qū) |
dateStyle | 字符串使用的日期顯示方式 | 是 | String | 否 | default |
timeStyle | 字符串使用的時間顯示格式 | 是 | String | 否 | default |
timeZone | 使用的時區(qū) | 是 | String | 否 | 當?shù)貐^(qū)時 |
var | 使用var定義的名字保存對象 | 否 | String | 否 | 無 |
scope | var的JSP范圍 | 否 | String | 否 | page |
代碼示例:
- 使用了
<fmt:formatDate>
把一個日期對象格式化成一個日期的字符串,并把該字符串以參數(shù)名為a存儲page范圍內(nèi)忧设。 - 使用
<fmt:parseDate>
方法把a的值(字符串)格式化成一個Date并以參數(shù)名為b存儲在page范圍內(nèi)刁标。 - 使用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)中的參數(shù)對比,可以發(fā)現(xiàn)兩者是一個互逆的過程谨垃。
(3) 使用Java腳本進行測試Date對象的toString()方法可以輸出時間字符串启搂。hashCode()可以得到一個對象的hashCode硼控。該方法只能應用于對象,因此可以證明得到的是一個日期對象胳赌。