JSP處理日期
在本章中,我們將討論如何處理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文檔。