在写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}"/> >
然后表单就变成设定的格式了: