在本章中,我們將討論如何處理JSP中的資料。 使用JSP最重要的優點之一就是可以使用核心Java中的所有可用方法。我們將瀏覽java.util包中提供的Date
類; 這個類封裝了當前的日期和時間。
Date
類支援兩個建構函式。第一個建構函式使用當前日期和時間初始化物件。
Date( )
以下建構函式接受一個等於從1970年1月1日午夜以來經過的毫秒數的引數。
Date(long millisec)
當實現一個Date
物件後,就可以呼叫以下任何支援方法來操作日期 -
編號 | 方法 | 描述 |
---|---|---|
1 | boolean after(Date date) |
如果呼叫的Date 物件包含的日期晚於date 指定的日期,則返回true ,否則返回false 。 |
2 | boolean before(Date date) |
如果呼叫的Date 物件包含早於date 指定的日期,則返回true ,否則返回false 。 |
3 | Object clone( ) |
複製呼叫Date 物件。 |
4 | int compareTo(Date date) |
將呼叫物件的值與date 對應的值進行比較。 如果值相等,則返回0 。 如果呼叫物件早於date ,則返回負值。 如果呼叫物件晚於日期,則返回正值。 |
5 | int compareTo(Object obj) |
如果obj 是類Date 的物件,則與compareTo(Date) 的操作相同。 否則會引發ClassCastException 。 |
6 | boolean equals(Object date) |
如果呼叫的Date 物件包含與date 指定的時間和日期相同的時間和日期,則返回true ,否則返回false 。 |
7 | long getTime( ) |
返回從1970年1月1日起經過的毫秒數。 |
8 | int hashCode( ) |
返回撥用物件的雜湊碼。 |
9 | void setTime(long time) |
設定時間指定的時間和日期,表示從1970年1月1日午夜開始的以毫秒為單位的經過時間 |
10 | String toString( ) |
將呼叫的Date 物件轉換為字串並返回結果。 |
為了方便演示下面的範例,我們開啟Eclipse建立一個動態Web專案:HandlingDate,並在這個專案中建立對應的範例JSP頁面作為演示。
使用JSP程式,很容易得到當前日期和時間。 可以使用Date
物件的toString()
方法的來列印當前日期和時間,如下所示:
檔案:curDatetime.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*, javax.servlet.*"%>
<!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>JSP獲取當前時間範例</title>
</head>
<body>
<div style="margin: auto; width: 80%">
<center>
<h1>顯示當前日期和時間</h1>
</center>
<%
Date date = new Date();
out.print("<h2 align = \"center\">" + date.toString() + "</h2>");
%>
</div>
</body>
</html>
編寫完成上面程式碼後,然後部署專案,開啟瀏覽器存取URL: http://localhost:8080/HandlingDate/curDatetime.jsp 呼叫此JSP。將收到以下結果 -
每次重新整理時,您都會發現以秒為單位的有所變化。
如上一節所述,可以在JSP指令碼中使用所有可用的Java方法。如果需要比較兩個日期,請考慮以下方法 -
getTime()
方法來獲取1970年1月1日午夜以後兩個物件所經過的毫秒數,然後比較這兩個值。before()
,after()
和equals()
方法,因為本月十二號是在18日之前; 例如,新的Date(1999,2,12).before(new Date(1999,2,18))
返回true
。compareTo()
方法; 該方法由Comparable
介面定義,並由Date
實現。SimpleDateFormat
是一個具體的類,用於以區域設定方式格式化和解析日期。SimpleDateFormat
允許從選擇任何使用者定義的日期時間格式的模式開始。
修改上面的例子如下 -
檔案:DateFormatting.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*"%>
<%@ page import="javax.servlet.*,java.text.*"%>
<!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>格式化日期範例</title>
</head>
<body>
<div style="margin: auto; width: 80%">
<center>
<h1>當前時間格式化</h1>
</center>
<%
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a zzz");
out.print("<h2 align=\"center\">" + ft.format(dNow) + "</h2>");
%>
</div>
</body>
</html>
編寫完成上面程式碼後,然後部署專案,開啟瀏覽器存取URL: http://localhost:8080/HandlingDate/DateFormatting.jsp 呼叫此JSP。將收到以下結果 -
要指定時間格式,請使用時間模式字串。 在這種模式中,所有ASCII字母都保留為模式字母,其定義如下:
字元 | 描述 | 範例 |
---|---|---|
G |
時代的標誌 | AD |
y |
年份四位數 | 2019 |
M |
月份 | July 或 07 |
d |
月份中的天 | 0 |
h |
A.M./P.M.(1~12)小時格式 | 2 |
H |
小時格式(0~23) | 22 |
m |
分鐘小時 | 30 |
s |
秒鐘 | 55 |
S |
毫秒 | 234 |
E |
一周中的一天 | Tuesday |
D |
一年中的一天 | 360 |
F |
月份中的星期 | 2(七月第2個週三) |
w |
一年中星期數 | 40 |
W |
一個月 | |
a |
A.M./P.M.標記 | PM |
k |
小時(1~24) | 24 |
K |
A.M./P.M.(0~11)小時形式 | 0 |
z |
時區 | 東部標準時間 |
' |
逃義文字 | 分隔符 |
" |
單引號 | ` |
有關操作日期的常用可用方法的完整列表,可以參考標準Java文件。