JSTL中的格式化动作标签

148 阅读3分钟

JSTL提供了格式化和解析数字和日期的标签,我们讨论里面有: formatNumber、formatDate,parseNumber及parseDate。

formatNumber标签

formatNumber标签用于格式化数字,百分比,货币。该标签用指定的格式或精度来格式化数字。(将数值型数据转换成指定格式的字符串类型。)

需要导入:

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

语法格式:

<fmt:formatNumber value="<string>" type="<string>" var="<string>" scope="<string>" />

属性

属性描述是否必要默认值
value要显示的数字
typeNUMBER,CURRENCY,或PERCENT类型Number
var存储格式化数字的变量Print to page
scopevar属性的作用域page

注意:

  1. 如果设置了var属性,则格式化后的结果不会输出,需要通过EL表达式获取var对应的限域变量名
  2. 默认的类型(typle)的取值为number。可取值: number数值型、percent百分比类型、currency货币型
<fmt:formatNumber value="10" type="number" var="num" />${num }<br>    <!-- 10 -->
<fmt:formatNumber value="10" type="percent" /><br>                    <!-- 1,000% -->
<fmt:formatNumber value="10" type="currency" /><br>                   <!-- ¥10.00 -->
<!-- 设置时区 -->
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="10" type="currency" />                       <!-- $10.00 -->

formatDate标签

formatDate标签用于使用不同的方式格式化日期。(将Date型数据转换成指定格式的字符串类型。)

语法格式

<fmt:formatDate value="<string>" type="<string>" dateStyle="<string>" timeStyle="<string>" pattern="<string>" timeZone="<string>" var="<string>" scope="<string>" />

属性

属性描述是否必要默认值
value要显示的日期
typeDATE,TIME,或 BOTHdate
dateStyleFULL,LONG,MEDIUM, SHORT,或 DEFAULTdefault
timeStyleFULL,LONG, MEDIUM,SHORT,或 DEFAULTdefault
pattern自定义格式模式
timeZone显示日期的时区默认时区
var存储格式化日期的变量名显示在页面
scope存储格式化日志变量的范围页面

标签格式模式

代码描述实例
y不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。2022
M月份数字。一位数的月份没有前导零。April & 4
d月中的某一天。一位数的日期没有前导零。1
h12小时制的小时。一位数的小时数没有前导零。12
H24小时制的小时。一位数的小时数没有前导零。15
m分钟。一位数的分钟数没有前导零。45
s秒。一位数的秒数没有前导零。52
<%
	request.setAttribute("myDate", new Date());
%>
${myDate }<br>
<fmt:formatDate value="${myDate }"/><br>
<fmt:formatDate value="${myDate }" type="date"/><br>
<fmt:formatDate value="${myDate }" type="time"/><br>
<fmt:formatDate value="${myDate }" type="both"/><br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="full"/><br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="short"/><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd"/><br>

parseNumber标签

parseNumber标签用来解析数字,百分数,货币。(parseNumber标签可以将数字、货币或百分比类型的字符串转换成数值型。)

语法格式

<fmt:parseNumber value="<string>" type="<string>" var="<string>" scope="<string>" />

属性

属性描述是否必要默认值
value要解析的数宁Body
typeNUMBER,,CURRENCY,或PERCENTnumber
var存储待解析数字的变量Print to page
scopevar属性的作用域page
<fmt:parseNumber value="100"  /><br>
<fmt:parseNumber value="100" type="number"  /><br>
<fmt:parseNumber value="100%" type="percent"  /><br>

parseDate标签

parseDate标签用于解析日期。(将指定格式的字符串转换成Date类型。)

语法格式

<fmt:parseDate value="<string>" type="<string>" dateStyle="<string>" timeStyle="<string>" pattern="<string>" timeZone="<string>" var="<string>" scope="<string>" />

属性

属性描述是否必要默认值
value要显示的日期
typeDATE,TIME,或 BOTHdate
dateStyleFULL,LONG,MEDIUM, SHORT,或 DEFAULTdefault
timeStyleFULL,LONG, MEDIUM,SHORT,或 DEFAULTdefault
pattern自定义格式模式
timeZone显示日期的时区默认时区
var存储格式化日期的变量名显示在页面
scope存储格式化日志变量的范围页面
<fmt:parseDate value="2022-5-1" type="date" /><br>
<fmt:parseDate value="2022/5/1" pattern="yyyy/MM/dd" />