jstl标签,格式化日期和 数字<fmt>
2013-9-2阅读208 评论0
数字日期格式化
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
2.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]
/>
【语法2】:
<frm:formatNumber
[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]
>
被格式化的数据
</frm:formatNumber>
表2-1-1
<fmt:formatNumber>标签参数说明
名称 |
说明 |
EL |
类型 |
必须 |
默认值 |
value |
要格式化的数据 |
是 |
String |
是 |
无 |
type |
指定类型(单位、货币、百分比等)见表 |
是 |
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 |
Type属性的类型应用见表2-2.
表2-1-2 Type的属性类型
类型 |
说明 |
示例 |
number |
数字格式 |
0.8 |
currency |
当地货币 |
¥0.80 |
percent |
百分比格式 |
80% |
【示例代码】:<fmt:formatNumber>标签示例:fmtdemo01.jsp
<%@
page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
<style>
.table{
cellpadding="0";cellspacing="0";align="center";border=10;
}
</style>
</head>
<body>
<h4 align="center">
<c:out value="<fmt_number>标签的使用"></c:out>
</h4>
<hr>
<table border=1>
<tr align="center">
<td width="100">类型</td>
<td width="100">使用数据</td>
<td width="100">结果</td>
<td width="300">说明</td>
</tr>
<tr>
<td>数字格式化</td>
<td>11108.754</td>
<td><fmt:formatNumber type="number" pattern="###.##">11108.756</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>219557</td>
<td><fmt:formatNumber type="number">219557</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>
<c:out value="${money}"></c:out></td>
<td>存储的money的值为${money}</td>
</tr>
</table>
</body>
</html>
【代码说明】:
(1)从应用角度可以把属性分为三类:数字格式化(number)、货币格式化(currency)、百分比格式化(percent)。使用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属性。
【程序运行结果】:
<fmt_number>标签的使用
类型 | 使用数据 | 结果 | 说明 |
数字格式化 | 11108.754 | 11108.76 | 使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。 |
数字格式化 | 9557 | 9.557E3 | 使用科学计数法。 |
数字格式化 | 219557 | 219,557 | 使用默认分组。 |
数字格式化 | 9557 | 9,557 | 不使用分组。 |
数字格式化 | 9557 | 557 | 使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。 |
百分比格式化 | 0.98 | 98% | 用百分比形式显示一个数据。 |
货币格式化 | 188.88 | ¥188.80 | 将一个数据转化为货币形式输出。 |
存储数据 | 188.88 | ¥188.80 | 存储的money的值为¥188.80 |
提示:如果给定的数据类型有错误将或产生异常。例如:给定的数据为aa进行类型转化,将使应用程序无法显示。
因此在实际应用中显示的格式化应该放入<c:catch/>语句中。
2.2、<frm:parseNumber/>标签
【功能】:将格式化后的数字、货币、百分比都转化为数字类型。【语法1】:
<fmt:parseNumber value="number" [type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
/>
【语法2】:<fmt:parseNumber [type=”number|currency|percent”]
[pattern=”pattern”]
[parseLocale=”locale”]
[intergerOnly=”true|false”]
[scope=”page|request|session|application”]
>
Number
</fmt:parseNumber>
表2-2-1 <fmt:parseNumber>标签参数说明
名称 |
说明 |
EL |
类型 |
是否必须 |
默认值 |
value |
被解析的字符串 |
是 |
String |
是 |
无 |
type |
指定单位(数字、货币、百分比) |
是 |
String |
是 |
number |
pattern |
格式样式 |
是 |
String |
否 |
无 |
parseLocale |
用来替代默认区域的设定 |
是 |
String, Java.util. Locale |
是 |
默认本地样式 |
var |
存储已经格式化的数据 |
否 |
String |
否 |
无 |
scope |
var变量的作用域 |
否 |
String |
是 |
page |
<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆运算。
相应的参数和类型的配置和使用<fmt:formatNumber>格式化时相同。
【示例代码】:<fmt:parseNumber>标签示例:fmtdemo02.jsp
实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。
<%@
page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>I18N标签库</title>
</head>
<body>
<h4>
<c:out value="<frm-parseNumber>标签的使用"></c:out>
</h4>
<hr>
</body>
<fmt:formatNumber var="money" type="currency" >188.8</fmt:formatNumber>
<ul>
<li>格式化前的数据为:
<c:out value="${money}"></c:out>
<fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
<li>格式化后的数据为:<c:out value="${money}"></c:out>
<li>可以对格式化的后的数据进行运算: <c:out value="${money+200}"></c:out>
<li>对百分比进行格式化98%为: <fmt:parseNumber type="percent">98%</fmt:parseNumber>
</ul>
</body>
</html>
【代码解析】:
(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%进行转化。
【程序运行结果】:
<frm-parseNumber>标签的使用
- 格式化前的数据为: ¥188.80
- 格式化后的数据为:188.8
- 可以对格式化的后的数据进行运算: 388.8
- 对百分比进行格式化98%为: 0.98
同时,在进行类型转换时如果给出的类型不正确将会出现异常。
例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。
因此在实际应用中用<c:catch/>捕获异常。
2.3、<fmt:formatDate/>标签
【功能】:该标签主要用来格式化日期和时间。
【语法】:
<fmt: formatDate value=”date” [type=”time|date|both”]
- 上一篇: PHP获取当前脚本内存占用情况
- 下一篇: EL表达式处理页面毫秒数