主要是用到jsp的JSTL:fmt标签
第一步
在jsp顶部引入JSTL:fmt标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
1. 日期格式化
value填入你需要格式化前的时间,pattern是自己定义的格式化后的时间格式
<fmt:formatDate value=“${date}” pattern=“yyyy-MM-dd HH:mm:ss”/>
2.数字格式化
pattern:指定格式化数字的格式
符号代表的意义
0 代表 一个数位
‘#’ 代表 一个数位,前导零和追尾零不显示
. 代表 小数点分割位置
,代表 组分隔符的位置
%代表 用100乘,并显示百分号
//类型1
<fmt:formatNumber value="12345" type="currency" pattern="$.00"/> -- $12345.00
//类型2
<fmt:formatNumber value="12345" type="currency" pattern="$.0#"/> -- $12345.0
//类型3
<fmt:formatNumber value="1234567890" type="currency"/> -- $1,234,567,890.00(那个货币的符号和当前web服务器的 local 设定有关)
//类型4
//格式化是默认支持四舍五入的
<fmt:formatNumber value="1234.7891" pattern="#,#00.0#"/> -- 123,4.79
//类型5
<fmt:formatNumber value="1234.7" pattern="#,#00.0#"/> -- 123,4.7
//类型6
<fmt:formatNumber value="1234.7" pattern="#,#00.00#"/> -- 123,4.70
3.字符串转数字
这个跟JSTL标签没关系的
使用之前得判断是否为空或者null,不然会报
java.lang.NumberFormatException: empty String异常
Double.parseDouble("123456")
4.百分号格式化
type:指定格式化类型为百分号,(type 可以是currency、 number、 和percent)
maxFractionDigits:指定格式化后保存的小数位个数
<fmt:formatNumber type="percent" value="1223" maxFractionDigits="2" />
可以结合起来用,比如金额转化的时候,如果之前保存的金额是字符串,那么需要转成数字才能操作,当然不转也是可以除以100,例子如下:
其中的listItem.TransAtSingleDay是以“分”为单位的字符串,现在想格式化为以“元”为单位的,这里先判断listItem.TransAtSingleDay,防止出现异常,前面有说明的
//第一中做法:先转数字,再除以100
<c:if test="${listItem.TransAtSingleDay !=''&& listItem.TransAtSingleDay != null }">
<fmt:formatNumber value="${Double.parseDouble(listItem.TransAtSingleDay)/100}" pattern="#,#00.00#" maxFractionDigits="2"/>
</c:if>
//第二种不转:
<fmt:formatNumber value="${listItem.TransAtSingleDay/100}" pattern="#,#00.00#" maxFractionDigits="2"/>