由于EL表达式的运算结果是浮点数时(而且EL表达式的除运算结果也是浮点数,这和其他语言还有点不一样),在网页上显示一长串确实不雅。使用JSTL的fmt标签,可以实现对数字、货币、时间……的格式化显示。
首先在页面前导入该标签库
<%@ taglib uri=”http://java.sun.com/jsp/jstl/fmt” prefix=”fmt” %>
数字格式化(value部分可为EL表达式):
1. //-- $12.00
2. //-- $12.0
3. //-- $1,234,567,890.00(那个货币的符号和当前web服务器的 local 设定有关)
4.// -- 123,456.79
5. //-- 123,456.7
6.// -- 123,456.70
7. //– 1,200% (type 可以是currency、 number、 和percent)。
Java程序中格式化数字的代码:
DecimalFormat df = new DecimalFormat(“格式”);
String fmt =df.format(double);
“格式”部分自己定义:
符号 意义
0 一个数位
一个数位,前导零和追尾零不显示
. 小数点分割位置
, 组分隔符的位置
- 负数前缀
% 用100乘,并显示百分号
其他任何符号 在输出字符串中包括指定符号
数字用例:元
————————————–时间格式 —————————————————-
jakarta-taglibs-standard-1.1.2
/lib—jstl.jar、standard.jar
/tld—fmt.tld
<%@ taglib uri=”http://java.sun.com/jsp/jstl/ fmt” prefix=”fmt ” %>
fmt:formatDate 的输出格式
2004-5-31 23:59:59
2004-4-1
23:59:59
2004-5-31
04-5-31
2004-5-31
2004年5月31日
2004年5月31日 星期一
23:59:59
下午11:59
23:59:59
下午11时59分59秒
下午11时59分59秒 CDT
星期四, 四月 1, 2004 13:30:00 -0600
2009-01-11 00:28
格式模式
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
时间用例: