JSTL格式化标签
老样子 先引入标签库头:
要使用格式化标签库需要先引入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
1.
fmt:formatDate标签
该标签用于使用不同的模式格式化日期。其常用属性有:
- value:将要被格式化的数据
- pattern:格式化的模式。其与 SimpleDateFormat 的参数设置方式相同 例: yyyy-MM-dd。
- var:格式化后的字符串所要存放的变量。若不指定 var,则会将格式化过的结果直接显示在页面
- scope:变量存放的域属性空间,取值为 page、request、session、application。默认为page 范围
- type:其取值为 date、time,或 both,表示给出的 value 是日期、时间,还是两者都包含。默认为 date
例:
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% Date date = new Date(); request.setAttribute("now", date); %> <fmt:formatDate value="${ now }" pattern="yyyy-MM-dd" /> <!-- 直接输出的模式 --> <fmt:formatDate value="${ now }" var="var_date" pattern="yyyy-MM-dd" /> <!-- 添加了var 不会直接输出 而是放在var中 默认存储域为request --> <table border="1"> <tr> <td>${ var_date }</td> </tr> </table> </body> </html>
fmt:parseDate标签
该标签用于将指定字符串转换为日期类型。常用的属性有:
- value:将要被格式化的数据
- pattern:格式化的模式。其与 SimpleDateFormat 的参数设置方式相同 例: yyyy-MM-dd。
- var:转换后的日期类型数据所要存放的变量。若不指定 var,则会将转换过的结果直接显示在页面
- scope:变量存放的域属性空间,取值为 page、request、session、application。默认为page 范围。
和formatDate 参数都差不多:
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String date = "2020-06-03"; request.setAttribute("now", date); %> <fmt:parseDate value="${ now }" pattern="yyyy-MM-dd" var="var_now"></fmt:parseDate> <!-- 如果没var 直接输出该时间 --> <table border="1"> <tr> <td>${ var_now }</td> <%-- 输出结果: Wed Jun 03 00:00:00 CST 2020 --%> </tr> </table> </body> </html>
fmt:formatNumber标签
该标签用于按照指定格式对数字进行格式化。常用的属性有:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
value | 要显示的数字 | 是 | 无 |
type | NUMBER,CURRENCY(货币), PERCENT(百分数) | 否 | Number |
pattern | 指定一个自定义的格式化模式用与输出 | 否 | 无 |
groupingUsed | 是否对数字分组 (TRUE 或 FALSE) | 否 | true |
maxIntegerDigits | 整数部分最多的位数 | 否 | 无 |
minIntegerDigits | 整数部分最少的位数 | 否 | 无 |
maxFractionDigits | 小数点后最多的位数 | 否 | 无 |
minFractionDigits | 小数点后最少的位数 | 否 | 无 |
var | 存储格式化结果的变量 | 否 | 无 |
scope | var 属性的作用域 | 否 | page |
例子:【主义看注释】:
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action=""> <!-- 格式化后直接在页面显示 --> <!-- 整数不够前补0 小数不够后不补0 输出: --> <fmt:formatNumber value="12345.789" minIntegerDigits="6" maxFractionDigits="2"></fmt:formatNumber> <!--minIntegerDigits最少x位整数【不够前补0】; maxFractionDigits最多2位小数【超出去除】 --> <br> <fmt:formatNumber value="123456" minFractionDigits="2" groupingUsed="false"></fmt:formatNumber> <!-- minFractionDigits最小两位小数[不够补0] groupingUsed不分组 默认分 其实就是逗号, --> <br> <!-- 格式化后存储在某个变量中 --> <fmt:formatNumber value="12345.678" var="num1" minIntegerDigits="6" maxFractionDigits="2"></fmt:formatNumber> <!-- 带var 不直接输出 放入var中 --> <br> <fmt:formatNumber value="123456" var="num2" minFractionDigits="2" groupingUsed="false"></fmt:formatNumber> <!-- 带var 不直接输出 放入var中 不分组的 --> <br> num1:<input type="text" name="num1" value="${num1 }"> <!-- 输出var 默认域 page中 --> <br> num2:<input type="text" name="num2" value="${num2 }"> <!-- 输出var 默认域 page中 --> </form> </table> </body> </html>
若要使用 pattern 模式,则其中常用的符号的意义为:
符号 | 描述 |
---|---|
0 | 代表一位数字 |
E | 使用指数格式 |
# | 代表一位数字,若没有则显示 0 |
. | 小数点 |
, | 数字分组分隔符 |
; | 分隔格式 |
– | 使用默认负数前缀 |
% | 百分数 |
? | 千分数 |
说实话 这个 pattern我也看不多懂
fmt:parseNumber标签
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
value | 要解析的数字 | 否 | 无 |
type | NUMBER,,CURRENCY,或 PERCENT | 否 | number |
integerOnly | 是否只解析整型数(true)或浮点数(false) | 否 | false |
pattern | 自定义解析模式 | 否 | 无 |
var | 存储待解析数字的变量 | 否 | 无 |
scope | var 属性的作用域 | 否 | page |
把字符串解析为数字
<!-- 直接在页面中显示 --> <fmt:parseNumber value="123,456,789" integerOnly="true"></fmt:parseNumber><br> <fmt:parseNumber value="123,456,789" integerOnly="false"></fmt:parseNumber><br> <!-- 将结果存储在变量中并做运算 --> <fmt:parseNumber value="123,456,789" var="num" integerOnly="true"></fmt:parseNumber><br> ${num + 1 }