牛骨文教育服务平台(让学习变的简单)
博文笔记

jstl标签,格式化日期和 数字<fmt>

创建时间:2014-05-07 投稿人: 浏览次数:3600

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 
提示:<fmt:parseNumber>属性参数的配置和使用同<fmt:formatNumber>标签使用的方式一样。

同时,在进行类型转换时如果给出的类型不正确将会出现异常。

例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。

因此在实际应用中用<c:catch/>捕获异常。

2.3、<fmt:formatDate/>标签

【功能】:该标签主要用来格式化日期和时间。

【语法】:

<fmt: formatDate value=”date” [type=”time|date|both”]

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。