JSP使用fmt:formatDate格式化日期


日期和时间在国际化web应用程序中非常重要。
不同的国家都有自己表示日期和时间的格式

JSTL提供了有一个名为<fmt:formatDate>的操作,来根据指定的地区对日期和时间进行格式化。

下面是<fmt:formatDate>操作的属性表:

名称 必须 说明
value yes 要格式化的日期或时间值。
type no 日期和时间是否用于格式化
dateStyle no 仅当日期值用于格式化时,为日期指定预定义的格式化样式。
timeStyle no 仅当时间值用于格式化时,为时间指定预定义的格式化样式。
pattern no 指定格式化日期和/或时间的标准自定义模式
timeZone no 如果时间值用于格式化,则此属性指定该时间值的时区。
var no 此属性用于导出作用域变量,该变量将格式化的日期和/或时间存储为字符串
scope no 指定var的作用域。

使用<fmt:formatDate>操作在不同地区格式化日期示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
 
<html>
<head>
<title>格式化日期</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<p> 在美国的日期格式
<fmt:setLocale value="en_US" />
<fmt:formatDate value="${now}" />
</p>
<p> 在中国的日期格式
<fmt:setLocale value="zh_CN" />
<fmt:formatDate value="${now}"/>
</p>
 
</body>
</html>

输出:

1
2
在美国的日期格式 Nov 26, 2018
在中国的日期格式 2018-11-26

格式化日期或时间

默认情况下,<fmt:formatDate>只对日期进行格式化并显示。
如果也想显示时间,那么需要使用type这个属性。

属性type有3个值:date,timeboth

格式化并显示时间示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>格式化日期和时间</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<p> 日期
<fmt:formatDate value="${now}" type="date" />
</p>
<p> 时间
<fmt:formatDate value="${now}" type="time" />
</p>
<p> 日期和时间
<fmt:formatDate value="${now}" type="both" />
</p>
</body>
</html>

输出:

1
2
3
4
5
日期 2018-11-26
时间 10:35:18
日期和时间 2018-11-26 10:35:18

设置日期和时间的格式

在格式化以及显示日期和时间时,还可以自定义它们的样式。

<fmt:formatdate>patterns属性用于使用自定义样式。
timeStyledateStyle属性用于指定要使用的预定义样式。

样式使用到的代码编码表:

编码 说明
G 时代(公元, 公元前,等等)
y 年份(两位数年份yy,四位数年份yyyy)
M 月份(数字月份使用,月份名称或缩写使用MMM或更长)
w 一年中的一周(ww为两位数)
W 一个月中的那一周
D 年中的某一天(DDD为三位数)
d 每月的第一天(两位数使用dd)
F 一周中的数字日
E 一周中的某一天(全名使用EEEE或更长)
a AM / PM 指示器(指示上午下午)
H 小时数(0-23)
k 小时数(1-24)
K 小时 a.m或小时 p.m.(0-11)
h 小时 a.m或小时 p.m.(1-12)
m 分钟
s
S 毫秒
z 完整的时区名称
Z RFC 822时区(例如,0500)

使用自定义时间格式示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>格式化日期和时间</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<p> 短时间格式:
<fmt:formatDate value ="${now}"
type="both"
timeStyle="short"
dateStyle="full" />
</p>
<p> 长时间格式:
<fmt:formatDate value ="${now}"
type="time"
timeStyle="long"
/>
</p>
<p> 自定义时间格式:
<fmt:formatDate value ="${now}"
pattern="EEEE hh:mm a"
/>
</p>
<p> 自定义时间格式 年月日分时秒:
<fmt:formatDate value ="${now}"
pattern="yyyy-MM-dd HH:mm:ss"
/>
</p>
</body>
</html>

输出:

1
2
3
4
5
6
7
短时间格式: 2018年11月26日 星期二 上午12:51
长时间格式: 上午12时51分46秒
自定义时间格式: 星期二 12:51 上午
自定义时间格式 年月日分时秒: 2018-11-26 00:51:46


原文链接:https://codingdict.com/