使用Servlet的最重要的優勢之一是,可以使用在核心Java中的大多數可用的方法。本教學將通過Java提供的日期類,java.util包中這個類封裝了當前的日期和時間。
Date類支持兩個構造函數。第一個構造函數初始化對象的當前日期和時間。
Date()
下麵的構造函數接受一個參數,它等於1970年1月1日午夜以來經過的毫秒數
Date(long millisec)
一旦你有一個日期對象,你可以調用任何的支持方法使用日期:
SN | 方法和描述 |
---|---|
1 |
boolean after(Date date) 返回true,如果調用Date對象中包含的日期不遲於指定的日期,否則,返回false。 |
2 |
boolean before(Date date) 如果調用Date對象中包含的日期是早於指定的日期,則返回true,否則,返回false。 |
3 |
Object clone( ) 重複調用Date對象。 |
4 |
int compareTo(Date date) 與過期的調用對象的值進行比較。如果值是相等則返回0。如果調用對象是早於日期返回一個負的值。如果調用對象是最遲日期返回正值。 |
5 |
int compareTo(Object obj) 和compareTo(date)操作完全相同,如果obj是Date類。否則,它會拋出一個ClassCastException。 |
6 |
boolean equals(Object date) 返回true,如果調用Date對象包含一個指定的日期相同的日期和時間,否則,返回false。 |
7 |
long getTime( ) 返回1970年1月1日以來已經過的毫秒數。 |
8 |
int hashCode( ) Returns a hash code for the invoking object. |
9 |
void setTime(long time) 設置時間和日期,指定的時間,這代表從午夜經過的時間(以毫秒為單位)1970年1月1日 |
10 |
String toString( ) 調用Date對象轉換成一個字符串並返回結果。 |
這是很簡單的Java Servlet獲取當前日期和時間。可以使用一個簡單的Date對象的toString()方法,當前的日期和時間如下:
// 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中創建相應的條目,然後調用這個servlet,使用URL http://localhost:8080/CurrentDate。這將產生以下結果:
Display Current Date & TimeMon Jun 21 21:46:49 GMT+04:00 2010 |
嘗試刷新URL http://localhost:8080/Current 在幾秒鐘內,你會發現差異。
正如上麵提到的,可以在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接口和實現的日期。
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,然後再次調用這個servlet,使用URL http://localhost:8080/CurrentDate。這將產生以下結果:
Display Current Date & TimeMon 2010.06.21 at 10:06:44 PM GMT+04:00 |
要指定的時間格式,使用的時間模式字符串。在這種模式下,所有的ASCII字母被保留為模式字母,它被定義為以下:
Character | Description | Example |
---|---|---|
G | Era designator | AD |
y | Year in four digits | 2001 |
M | Month in year | July or 07 |
d | Day in month | 10 |
h | Hour in A.M./P.M. (1~12) | 12 |
H | Hour in day (0~23) | 22 |
m | Minute in hour | 30 |
s | Second in minute | 55 |
S | Millisecond | 234 |
E | Day in week | Tuesday |
D | Day in year | 360 |
F | Day of week in month | 2 (second Wed. in July) |
w | Week in year | 40 |
W | Week in month | 1 |
a | A.M./P.M. marker | PM |
k | Hour in day (1~24) | 24 |
K | Hour in A.M./P.M. (0~11) | 10 |
z | Time zone | Eastern Standard Time |
' | Escape for text | Delimiter |
" | Single quote | ` |
不變可用的方法來處理日期的完整列表,你可以參考標準的Java文檔。