在写Java Web项目时,需要在某个页面显示生日(或者其它日期),日期以jaav.util.Date对象的形式存放在了request的属性中,如果直接用EL表达式(假设是${birthday})将日期取出作为input标签的value值,显示出的日期会是下面这样:
如果想让按照自己指定的格式显示日期,可以使用JSTL提供的日期格式化标签 <fmt:formatDate>
用法: 首先在jsp页面前面引入fmt的标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
fmt标签用法
语法规范:
<fmt:formatDate value="<string>" type="<string>" dateStyle="<string>" timeStyle="<string>" pattern="<string>" timeZone="<string>" var="<string>" scope="<string>"/>
属性用法
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要显示的日期 | 是 | 无 |
type | DATE, TIME, 或 BOTH | 否 | date |
dateStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
timeStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT | 否 | default |
pattern | 自定义格式模式 | 否 | 无 |
timeZone | 显示日期的时区 | 否 | 默认时区 |
var | 存储格式化日期的变量名 | 否 | 显示在页面 |
scope | 存储格式化日志变量的范围 | 否 | 页面 |
标签格式
代码 | 描述 | 实例 |
---|---|---|
G |
时代标志 |
AD |
y |
不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。 |
2002 |
M |
月份数字。一位数的月份没有前导零。 |
April & 04 |
d |
月中的某一天。一位数的日期没有前导零。 |
20 |
h |
12 小时制的小时。一位数的小时数没有前导零。 |
12 |
H |
24 小时制的小时。一位数的小时数没有前导零。 |
0 |
m |
分钟。一位数的分钟数没有前导零。 |
45 |
s |
秒。一位数的秒数没有前导零。 |
52 |
S |
毫秒 |
970 |
E |
周几 |
Tuesday |
D |
一年中的第几天 |
180 |
F |
一个月中的第几个周几 |
2 (一个月中的第二个星期三) |
w |
一年中的第几周r |
27 |
W |
一个月中的第几周 |
2 |
a |
a.m./p.m. 指示符 |
PM |
k |
小时(12 小时制的小时) |
24 |
K |
小时(24 小时制的小时) |
0 |
z |
时区 |
中部标准时间 |
' |
转义文本 |
|
'' |
单引号 |
(摘自http://www.runoob.com/jsp/jstl-format-formatdate-tag.html)
按照以上文档,就可以将原来的生日表单改成
<input value="<fmt:formatDate pattern="yyyy-MM-dd" value="${user.birthday}"/> >
然后表单就变成设定的格式了: