JSTL标准标签库之格式化标签(二)

来源:互联网 发布:js打开微信浏览器跳转 编辑:程序博客网 时间:2024/05/16 15:39
接着上面的一篇博客给出一个案例:


案例:获取所有的Locale,并按该Locale输出日期


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
     Locale[] locales = Locale.getAvailableLocales();///得到本地所有可以使用的文化
     pageContext.setAttribute("list",locales);///把所有可以使用的文化放到list中
     Locale l = request.getLocale();///得到当前处理的文化
     out.println("当前的文化信息:"+l.getDisplayCountry()+":"+l.getDisplayName());
%>
<table>
  <tr><td>名称</td><td>语言<td>日期</td></tr>
  <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
  <c:forEach var="locale" items="${list}">
  <fmt:setLocale value="${locale}"/>
  <tr>
  <td>${locale.displayName}</td>
  <td>${locale.language}</td>
  <td><fmt:formatDate value="${date}"/></td>
  </tr>
  </c:forEach>
  
</table>
</body>
</html>


输出结果:
当前的文化信息:中国:中文 (中国) 名称 语言 日期 
  May 27, 2017 
阿拉伯文 (阿拉伯联合酋长国) ar 27/05/2017 
阿拉伯文 (约旦) ar 27/05/2017 
阿拉伯文 (叙利亚) ar 27/05/2017 
克罗地亚文 (克罗地亚) hr 27.05.2017. 
法文 (比利时) fr 27-mai-2017 
西班牙文 (巴拿马) es 05/27/2017 
马耳他文 (马耳他) mt 27 Mej 2017 
......


2.案例:处理时区(下面两种标签都可以处理时区)
<fmt:TimeZone/>需要有标签体(也就是<fmt:TimeZone></fmt:TimeZone>
<fmt:srtTimeZone/>自封闭标签
下面给出一个案例来理解这个标签
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
   String [] zones = TimeZone.getAvailableIDs();///得到所有的时区的ID
   out.println("<table>");///在jsp中这样写都会被解析代码的,发挥出其功能
   for(int i=0;i<zones.length;i++)
   {
  TimeZone tz = TimeZone.getTimeZone(zones[i]);///得到当前处理的时区
  out.println("<tr>");
  out.println("<td>"+zones[i]+"</td>");
  out.println("<td>"+tz.getDisplayName()+"</td>");///得到处理时区的名字
  out.println("<td>"+tz.getRawOffset()/(60*60*1000)+"</td>");///得到与标准区(GMT格林威治标准时间 )差几个小时时间
       ///getRawOffset得到是毫秒,变成小时就除于60*60*1000即可
   }
   out.println("<table>");
%>
<c:set var="now" value="<%=new java.util.Date()%>"/>
当前本地时间:<fmt:formatDate value="${now}" type="both"/><p>
<fmt:setTimeZone value="GMT—8"/>
指定时区的当前时间:<fmt:formatDate value="${now}" type="both"/><p>
<%
   out.print(new java.util.Date().toString());
%>
</body>
</html>
输出结果部分:
Africa/Abidjan 格林威治时间 0 
Africa/Accra 加纳时间 0 
Africa/Addis_Ababa 东非时间 3 
Africa/Algiers 中欧时间 1 
Africa/Asmara 东非时间 3 
Africa/Asmera 东非时间 3 
Africa/Bamako 格林威治时间 0 
Africa/Bangui 西非时间 1 
Africa/Banjul 格林威治时间 0 
.......
当前本地时间:2017-5-27 18:42:04
指定时区的当前时间:2017-5-27 10:42:04


Sat May 27 18:42:04 CST 2017