9.4.8 <fmt:setTimeZone>标签
<fmt:setTimeZone>标签和<fmt:timeZone>标签的功能类似,也用于在JSP页面中设置时区,但<fmt:setTimeZone>标签可以将时区信息以java.util.TimeZone对象的形式保存在Web域中。<fmt:setTimeZone>标签的语法格式如下:
<fmt:setTimeZone value="timeZone" [var="varName"]
[scope="{page|request|session|application}"]/>
<fmt:setTimeZone>标签的属性说明如表9.17所示。
表9.17 <fmt:setTimeZone>标签的属性
属性名 | 是否支持动态属性值 | 属性类型 | 属性描述 |
value | true | String 或 java.util.TimeZone | 指定表示时区的ID或java.util.TimeZone对象。 |
var | false | String | 指定保存在Web域中的TimeZone对象的属性名。 |
scope | false | String | 指定保存TimeZone对象的Web域。 |
如果指定var属性,<fmt:setTimeZone>标签会使用var属性值作为属性名将设置的时区信息以TimeZone对象的形式保存在scope属性指定的Web域中。如果未指定var属性,TimeZone对象保存在Web域中的属性名是javax.servlet.jsp.jstl.fmt.timeZone.scope,其中scope表示scope属性的值。如scope属性值是request,TimeZone对象保存在request域中的属性名是javax.servlet.jsp.jstl.fmt.timeZone.request。<fmt:setTimeZone>的其他使用细节和<fmt:timeZone>标签相同,读者可以参阅9.4.7节的内容。
setTimeZone.jsp页面是一个使用<fmt:setTimeZone>标签设置时区的例子,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<jsp:useBean id="now" class="java.util.Date"/>
格林威治标准时间(GMT)<br>
<fmt:setTimeZone var="gmt" value="" scope="request"/>
<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/>
<hr>
<fmt:setTimeZone value="GMT+4:00" scope="request"/>
从request域中的TimeZone对象获得displayName属性值<br>
${requestScope["javax.servlet.jsp.jstl.fmt.timeZone.request"].displayName}<br>
<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/>
在浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/chapter9/setTimeZone.jsp
浏览器输出的结果如图9.26所示。
图9.26 使用<fmt:setTimeZone>标签设置时区