以下內容引用自http://wiki.jikexueyuan.com/project/jsp/handling-date.html:
使用JSP的一個最重要的優點是,可以使用核心Java中所有有效的方法。本教程將使用Java提供的Date類,它在java.util包是有效的,這個類封裝了當前的日期和時間。
這個Date類支持兩種構造函數。第一種構造函數是初始化當前日期和時間的對象。
Date( )
下面的構造函數是設置一個參數,該參數是從1970年1月1日凌晨0點開始至今的毫秒數。
Date(long millisec)
一旦有一個有效的Date對象,就可以調用以下任何支持的方法實現日期:
方法 | 描述 |
---|---|
boolean after(Date date) |
如果調用的Date對象包含的日期晚於指定的日期,則返 true,否則返回false。 |
boolean before(Date date) |
如果調用的Date對象包含的日期早於指定的日期,則返回true,否則返回false。 |
Object clone( ) |
重復調用的Date對象。 |
int compareTo(Date date) |
比較調用的Date對象與Date的值。如果值是相等的,則返回0。如果調用的Date對象比Date更早,則返回一個負數。如果調用Date 對象是晚於Date的,則返回一個正數。 |
int compareTo(Object obj) |
如果obj是Date類,則操作與compareTo(Date)是同一個,否則拋出ClassCastException異常。 |
boolean equals(Object date) |
如果調用的Date對象與指定的日期有相同的時間和日期,則返回true,否則返回false。 |
long getTime( ) |
返回從1970年1月1日凌晨0點開始至今的毫秒數。 |
int hashCode( ) |
返回調用對象的哈希編碼 |
void setTime(long time) |
由指定的時間設置時間和日期,它表示從1970年1月1日凌晨0點開始到指定時間的毫秒數。 |
String toString( ) |
轉換調用的Date對象到String類型,並且返回該結果。 |
一、得到當前日期&時間
在JSP程序中,很容易得到當前日期和時間。可以使用一個簡單的Date對象調用toString()方法來輸出當前的日期和時間,如下所示:
<%@ page import="java.io.*,java.util.*" %> <html> <head> <title>Display Current Date & Time</title> </head> <body> <center> <h1>Display Current Date & Time</h1> </center> <% Date date = new Date(); out.print( "<h2 align=\"center\">" +date.toString()+"</h2>"); %> </body> </html>
現在保存CurrentDate.jsp中的代碼,然后使用URL:http://localhost:8080/CurrentDate.jsp
來調用此JSP。將產生如下結果:
嘗試刷新URL:http://localhost:8080/CurrentDate.jsp
,將會發現每一次刷新都會有幾秒鍾的區別。
二、日期比較
正如上面提到的,可以使用所有有效的Java方法在Script中。如果需要比較兩個日期,下面是方法:
-
可以用getTime()方法分別獲得這兩個對象從1970年1月1日凌晨0點開始至今的毫秒數,然后比較這兩個值。
-
可以使用方法before(),after()和equals()。因為每月的12日在18日之前,例如,new Date(99,2,12).before(new Date(99,2,18)),返回 true。
- 可以使用compareTo()方法,它由Comparable接口定義並且由Date實現。
三、用SimpleDateFormat實現日期格式化
SimpleDateFormat是用對語言環境敏感的方式來格式化和解析日期的具體類。SimpleDateFormat允許對日期時間格式來選擇任何用戶定義的模式開始。
修改上面的例子,如下所示:
<%@ page import="java.io.*,java.util.*" %> <%@ page import="java.text.*" %> <html> <head> <title>Display Current Date & Time</title> </head> <body> <center> <h1>Display Current Date & Time</h1> </center> <% Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); out.print( "<h2 align=\"center\">" + ft.format(dNow) + "</h2>"); %> </body> </html>
使用URL:http://localhost:8080/CurrentDate.jsp,
將產生如下結果:
四、Simple DateFormat格式化代碼
指定時間格式使用一個時間模式字符串。在這個模式中,所有ASCII字母被保留為模式字母,它們被定義為如下:
字符 | 描述 | 例子 |
---|---|---|
G | 時代指示符 | AD |
y | 四位數的某年 | 2001 |
M | 一年中的某月 | July or 07 |
d | 一月中的某日 | 10 |
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 | 一月中的某周 | 1 |
a | A.M./P.M.標記 | PM |
k | 一天(1~24)中的某小時 | 24 |
K | A.M./P.M. (0~11)的某小時 | 10 |
z | 時區 | Eastern Standard Time |
' | 消逝的文本 | Delimiter |
" | 單引號 | ` |
對於一個用不變且有效的方法來操作日期的完整清單,可以參考標准的Java文檔。
測試工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test12