5.6.3 timeZone标签

5.6.3 timeZone标签

timeZone标签用于定义时区,使其body content中的时间信息按指定时区进行格式化或者解析。其语法如下:

1
2
3
<fmt:timeZone value="timeZone">
body content
</fmt:timeZone>

body contentJSP

timeZone标签的属性

timeZone只有一个value属性,value属性的属性值可以是类型为String或者java.util.TimeZone的动态值。

美国和加拿大时区的值

美国和加拿大时区的值如下表所示:

缩写 全名 时区
NST 纽芬兰标准时间 UTC-3:30
NDT 纽芬兰夏时制 UTC-2:30
AST 大西洋标准时间 UTC-4
ADT 大西洋夏时制 UTC-3
EST 东部标准时间 UTC-5
EDT 东部夏时制 UTC-4
ET 东部时间,如ESTEDT *
CST 中部标准时间 UTC-6
CDT 中部夏时制 UTC-5
CT 中部时间,如CSTCDT *
MST 山地标准时间 UTC-7
MDT 山地夏时制 UTC-6
MT 山地时间,如MSTMDT *
PST 太平洋标准时间 UTC-8
PDT 太平洋夏时制 UTC-7
PT 太平洋时间,如PSTPDT *
AKST 阿拉斯加标准时间 UTC-9
AKDT 阿拉斯加夏时制 UTC-8
HST 夏威夷标准时间 UTC-10

如果value属性为null或者empty,则使用GMT时区。

实例

设置请求对象中设置属性

1
2
3
4
<%@page import="java.util.Date"%>
<%
request.setAttribute("now", new Date());
%>

使用timeZone标签设置时区

1
2
3
4
5
6
7
8
9
10
11
12
13
<fmt:timeZone value="GMT+1:00">
<!-- 使用该时区格式化日期和时间 -->
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>
<fmt:timeZone value="HST">
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>
<fmt:timeZone value="CST">
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>

运行结果:

1
2
3
2019年4月6日 星期六 上午07时48分22秒 GMT+01:00
2019年4月5日 星期五 下午08时48分22秒 HST
2019年4月6日 星期六 上午01时48分22秒 CDT

小结

timeZone标签的标签体中使用formatDate标签,可以得到该时区对应的格式化时间。

完整代码

timeZoneTest.jsp:

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>timeZone Test</title>
</head>
<body>
<%@page import="java.util.Date"%>
<%
request.setAttribute("now", new Date());
%>
<fmt:timeZone value="GMT+1:00">
<!-- 使用该时区格式化日期和时间 -->
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>
<fmt:timeZone value="HST">
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>
<fmt:timeZone value="CST">
<fmt:formatDate value="${now}" type="both" dateStyle="full"
timeStyle="full" />
</fmt:timeZone><br>
</body>
</html>