
- Servlet 教程
- Servlet - 首頁
- Servlet - 概述
- Servlet - 環境設定
- Servlet - 生命週期
- Servlet - 示例
- Servlet - 表單資料
- Servlet - 客戶端請求
- Servlet - 伺服器響應
- Servlet - HTTP 程式碼
- Servlet - 編寫過濾器
- Servlet - 異常
- Servlet - Cookie 處理
- Servlet - 會話跟蹤
- Servlet - 資料庫訪問
- Servlet - 檔案上傳
- Servlet - 處理日期
- Servlet - 頁面重定向
- Servlet - 點選計數器
- Servlet - 自動重新整理
- Servlet - 傳送電子郵件
- Servlet - 打包
- Servlet - 除錯
- Servlet - 國際化
- Servlet - 註解
- Servlet 有用資源
- Servlet - 問答
- Servlet - 快速指南
- Servlet - 有用資源
- Servlet - 討論
Servlet - 處理日期
使用 Servlet 的最大優勢之一是您可以使用核心 Java 中的大多數方法。本教程將引導您瞭解 Java 提供的Date類,該類位於java.util包中,此類封裝了當前日期和時間。
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,則返回負值。如果呼叫物件晚於 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) 設定由 time 指定的時間和日期,time 表示自 1970 年 1 月 1 日午夜以來的毫秒數。 |
10 | String toString( ) 將呼叫 Date 物件轉換為字串並返回結果。 |
獲取當前日期和時間
在 Java Servlet 中獲取當前日期和時間非常簡單。您可以使用帶有 toString() 方法的簡單 Date 物件來列印當前日期和時間,如下所示:
// Import required java libraries import java.io.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Display Current Date & Time"; Date date = new Date(); String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor = \"#f0f0f0\">\n" + "<h1 align = \"center\">" + title + "</h1>\n" + "<h2 align = \"center\">" + date.toString() + "</h2>\n" + "</body> </html>" ); } }
現在讓我們編譯上面的 servlet 並建立 web.xml 中的相應條目,然後使用 URL https://:8080/CurrentDate 呼叫此 servlet。這將產生以下結果:
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
嘗試重新整理 URL https://:8080/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 是一個具體的類,用於以區域感知的方式格式化和解析日期。SimpleDateFormat 允許您首先為日期時間格式選擇任何使用者定義的模式。
讓我們修改上面的示例,如下所示:
// Import required java libraries import java.io.*; import java.text.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "Display Current Date & Time"; Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor = \"#f0f0f0\">\n" + "<h1 align = \"center\">" + title + "</h1>\n" + "<h2 align = \"center\">" + ft.format(dNow) + "</h2>\n" + "</body> </html>" ); } }
再次編譯上面的 servlet,然後使用 URL https://:8080/CurrentDate 呼叫此 servlet。這將產生以下結果:
Display Current Date & Time
Mon 2010.06.21 at 10:06:44 PM GMT+04:00
SimpleDateFormat 格式程式碼
要指定時間格式,請使用時間模式字串。在此模式中,所有 ASCII 字母都保留為模式字母,定義如下:
字元 | 描述 | 示例 |
---|---|---|
G | 紀元指示符 | 公元 |
y | 四位數年份 | 2001 |
M | 年中的月份 | 七月或 07 |
d | 月中的日期 | 10 |
h | 上午/下午的小時 (1~12) | 12 |
H | 一天中的小時 (0~23) | 22 |
m | 小時中的分鐘 | 30 |
s | 分鐘中的秒鐘 | 55 |
S | 毫秒 | 234 |
E | 一週中的日期 | 星期二 |
D | 年中的日期 | 360 |
F | 月中的星期幾 | 2 (七月中的第二個星期三) |
w | 年中的星期 | 40 |
W | 月中的星期 | 1 |
a | 上午/下午標記 | 下午 |
k | 一天中的小時 (1~24) | 24 |
K | 上午/下午的小時 (0~11) | 10 |
z | 時區 | 東部標準時間 |
' | 轉義文字 | 分隔符 |
" | 單引號 | ` |
有關可用於操作日期的完整常量方法列表,您可以參考標準 Java 文件。