天天看點

Servlet 處理日期

使用 Servlet 的最重要的優勢之一是,可以使用核心 Java 中的大多數可用的方法。本章将講解 Java 提供的 <b>java.util</b> 包中的 <b>Date</b> 類,這個類封裝了目前的日期和時間。

Date 類支援兩個構造函數。第一個構造函數初始化目前日期和時間的對象。

下面的構造函數接受一個參數,該參數等于 1970 年 1 月 1 日午夜以來經過的毫秒數。

一旦您有一個可用的 Date 對象,您可以調用下列任意支援的方法來使用日期:

序号

方法 &amp; 描述

1

<b>boolean after(Date date)</b>

如果調用的 Date 對象中包含的日期在 date 指定的日期之後,則傳回 true,否則傳回 false。

2

<b>boolean before(Date date)</b>

如果調用的 Date 對象中包含的日期在 date 指定的日期之前,則傳回 true,否則傳回 false。

3

<b>Object clone( )</b>

重複調用 Date 對象。

4

<b>int compareTo(Date date)</b>

把調用對象的值與 date 的值進行比較。如果兩個值是相等的,則傳回 0。如果調用對象在 date 之前,則傳回一個負值。如果調用對象在 date 之後,則傳回一個正值。

5

<b>int compareTo(Object obj)</b>

如果 obj 是 Date 類,則操作等同于 compareTo(Date)。否則,它會抛出一個 ClassCastException。

6

<b>boolean equals(Object date)</b>

如果調用的 Date 對象中包含的時間和日期與 date 指定的相同,則傳回 true,否則傳回 false。

7

<b>long getTime( )</b>

傳回 1970 年 1 月 1 日以來經過的毫秒數。

8

<b>int hashCode( )</b>

為調用對象傳回哈希代碼。

9

<b>void setTime(long time)</b>

設定 time 指定的時間和日期,這表示從 1970 年 1 月 1 日午夜以來經過的時間(以毫秒為機關)。

10

<b>String toString( )</b>

轉換調用的 Date 對象為一個字元串,并傳回結果。

在 Java Servlet 中擷取目前的日期和時間是非常容易的。您可以使用一個簡單的 Date 對象的 toString() 方法來輸出目前的日期和時間,如下所示:

現在,讓我們來編譯上面的 Servlet,并在 web.xml 檔案中建立适當的條目:

然後通過通路 http://localhost:8080/TomcatTest/CurrentDate 來調用該 Servlet。這将會産生如下的結果:

Servlet 處理日期

嘗試重新整理 URL http://localhost:8080/TomcatTest/CurrentDate,每隔幾秒重新整理一次您都會發現顯示時間的差異。

正如上面所提到的,您可以在 Servlet 中使用所有可用的 Java 方法。如果您需要比較兩個日期,以下是方法:

您可以使用 getTime() 來擷取兩個對象自 1970 年 1 月 1 日午夜以來經過的時間(以毫秒為機關),然後對這兩個值進行比較。

您可以使用方法 before( )、after( ) 和 equals( )。由于一個月裡 12 号在 18 号之前,例如,new Date(99, 2, 12).before(new Date (99, 2, 18)) 傳回 true。

您可以使用 compareTo( ) 方法,該方法由 Comparable 接口定義,由 Date 實作。

SimpleDateFormat 是一個以語言環境敏感的方式來格式化和解析日期的具體類。 SimpleDateFormat 允許您選擇任何使用者定義的日期時間格式化的模式。

讓我們修改上面的執行個體,如下所示:

再次編譯上面的 Servlet,然後通過通路 http://localhost:8080/TomcatTest/CurrentDate 來調用該 Servlet。這将會産生如下的結果:

Servlet 處理日期

使用事件模式字元串來指定時間格式。在這種模式下,所有的 ASCII 字母被保留為模式字母,這些字母定義如下:

字元

描述

執行個體

G

Era 訓示器

AD

y

四位數表示的年

2001

M

一年中的月

July 或 07

d

一月中的第幾天

h

帶有 A.M./P.M. 的小時(1~12)

12

H

一天中的第幾小時(0~23)

22

m

一小時中的第幾分

30

s

一分中的第幾秒

55

S

毫秒

234

E

一周中的星期幾

Tuesday

D

一年中的第幾天

360

F

所在的周是這個月的第幾周

2 (second Wed. in July)

w

一年中的第幾周

40

W

一月中的第幾周

a

A.M./P.M. 标記

PM

k

一天中的第幾小時(1~24)

24

K

帶有 A.M./P.M. 的小時(0~11)

z

時區

Eastern Standard Time

'

Escape for text

Delimiter

"

單引号

`

如需檢視可用的處理日期方法的完整清單,您可以參考标準的 Java 文檔。