在開發有關日歷的應用程序時,不規則的每月日期數、每周天數和周末的計算一直是個很費腦筋的問題。結果,日期和時間的編程經常令程序員新手畏縮不前。本文將演示在JSP應用程序中日期的用法,為讀者完成某些常見任務提供方便的參考。
目的
示例應用程序的目的是:
通過HTML表單把日期參數提交某個JSP頁來處理。
接收日期參數并創建Calendar對象。
采用Calendar對象找出提交的日期是一周的第幾天以及選中月份里有多少工作日。
用用戶易于閱讀的顯示格式對日期格式化。
環境
示例程序代碼在Java Web服務器上接受測試,該服務器配置了JDK 1.31。示例寫得很標準,在Tomcat或者其他JSP Web服務器(JDK 1.2或者以后版本)上運行的效果幾乎完全一樣。
通過表單把日期傳遞給JSP頁
Date(日期)參數是用戶從3欄下拉列表中選出來的。用戶提交表單之后,這些參數即被傳送給處理頁面。
在進行日歷編程時不要忘了導入java.util.Calendar:
〈%@ page import="java.util.Calendar" %〉
處理頁面的第1個任務是接收以下日期參數值:Date、Month和Year。
int curDate = 1;
if(request.getParameter("curDate") != null)
{
curDate = Integer.parseInt(request.getParameter("curDate"));
}
注意頁面參數被轉換為int類型,馬上我們就知道為什么要這么做了。
Calendar對象
我們的目標是創建和設置一個Calendar對象,用它進行日期計算。為此,我們首先需要實例化一個Calendar對象。
Calendar cal = Calendar.getInstance();
Calendar.getInstance()返回一個代表當前日期和時間的Calendar對象。
cal.clear();
cal.set(curYear, curMonth , curDate);
clear()方法清空Calendar,這樣我們才可能給該對象分配我們自己的日期值并為將來的計算做好準備。注意這些參數的順序:首先是年,最后是日期。
從Calendar獲取信息
以下是一組Calendar字段:
日期
DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_YEAR
時間
HOUR_OF_DAY, MINUTE, MILLISECOND, SECOND
周
WEEK_OF_MONTH, WEEK_OF_YEAR
年
YEAR
以上這些字段都可以通過Calendar的get()方法進行訪問,結果返回一個整數。以下代碼示例顯示了以上過程。
一周內的日期
int dayOfWeek = cal.get(cal.DAY_OF_WEEK);
out.print("〈br〉Day of Week: " + dayOfWeek + " 〈br〉");
一月內的日期
int dayOfMonth = cal.get(cal.DAY_OF_MONTH);
out.print("〈br〉Day of Month: " + dayOfMonth + " 〈br〉");
定位特定的日期
為了找出一周內特定的某一天就必須訪問DAY_OF_WEEK字段。該字段包含了范圍從1到7的整數值,1代表星期一,2代表星期二,其余以次類推。
int dayOfWeek = cal.get(cal.DAY_OF_WEEK);
這里有個向用戶顯示日期的好方法,那就是聲明一個包含一周內天數的數組。然后就可以很方便地顯示各個日期了。只要采用DAY_OF_WEEK整數訪問數組內的當前日期即可。
String[] weekdays = new String[]
{“”, "Monday", "Tuesday", "Wednesday"
新聞熱點
疑難解答