在本章中,我們將討論如何處理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
是一個具體的類,用於以區域設置方式格式化和解析日期。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文檔。