熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

JSP中日期的用法

2013-11-15 12:12:19  來源: JSP教程 

  在開發有關日歷的應用程序時不規則的每月日期數每周天數和周末的計算一直是個很費腦筋的問題結果日期和時間的編程經常令程序員新手畏縮不前本文將演示在JSP應用程序中日期的用法為讀者完成某些常見任務提供方便的參考


目的



示例應用程序的目的是

通過HTML表單把日期參數提交某個JSP頁來處理
接收日期參數並創建Calendar對象
采用Calendar對象找出提交的日期是一周的第幾天以及選中月份裡有多少工作日
用用戶易於閱讀的顯示格式對日期格式化

環境

示例程序代碼在Java Web服務器上接受測試該服務器配置了JDK 示例寫得很標准在Tomcat或者其他JSP Web服務器(JDK 或者以後版本)上運行的效果幾乎完全一樣

通過表單把日期傳遞給JSP頁

Date(日期)參數是用戶從欄下拉列表中選出來的用戶提交表單之後這些參數即被傳送給處理頁面

在進行日歷編程時不要忘了導入javautilCalendar
〈%@ page import="javautilCalendar" %〉

處理頁面的第個任務是接收以下日期參數值DateMonth和Year
int curDate = ;
if(requestgetParameter("curDate") != null)
{
curDate = IntegerparseInt(requestgetParameter("curDate"));
}

注意頁面參數被轉換為int類型馬上我們就知道為什麼要這麼做了



Calendar對象

我們的目標是創建和設置一個Calendar對象用它進行日期計算為此我們首先需要實例化一個Calendar對象
Calendar cal = CalendargetInstance();

CalendargetInstance()返回一個代表當前日期和時間的Calendar對象
calclear();
calset(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 = calget(calDAY_OF_WEEK);
outprint("〈br〉Day of Week: " + dayOfWeek + " 〈br〉");

一月內的日期
int dayOfMonth = calget(calDAY_OF_MONTH);
outprint("〈br〉Day of Month: " + dayOfMonth + " 〈br〉");

定位特定的日期



為了找出一周內特定的某一天就必須訪問DAY_OF_WEEK字段該字段包含了范圍從的整數值代表星期一代表星期二其余以次類推
int dayOfWeek = calget(calDAY_OF_WEEK);

這裡有個向用戶顯示日期的好方法那就是聲明一個包含一周內天數的數組然後就可以很方便地顯示各個日期了只要采用DAY_OF_WEEK整數訪問數組內的當前日期即可
String[] weekdays = new String[]
{“” "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"};
〈%=weekdays[calget(calDAY_OF_WEEK)]%〉

注意該數組的第個元素為空這是因為DAY_OF_WEEK字段值的范圍是從而數組元素的引用范圍則是從在數組開頭加一個空元素就可以保證DAY_OF_WEEK字段的值和數組引用相匹配了



找出周末
為了找出某天是否正好是星期天或者星期六可以編寫以下代碼
int day = calget(calDAY_OF_WEEK);
if(day == || day == )
{
//執行與周末有關的操作
}



工作日

現在我們需要計算出某個月內的工作日天數用戶輸入日期(參看indexjsp)之後把參數發送給處理頁面(參看displayjsp)在處理頁面上我們把Calendar對象設置為該月的第
calclear();
calset(curYear curMonth );
int maxDays = calgetActualMaximum(calDATE);
outprint("〈br〉Number of days in month: " + maxDays + "〈br〉");

我們還需要知道某個月內到底有多少天getActualMaximum()方法返回一個整數值該值就包含了每個月內的最多天數月是月是天等等在閏年的話月的天數返回

一旦我們得到了每個月內的最多天數我們就可以很方便地循環每月天數判斷是否是周末或者工作一日我們用add()方法給Calendar遞增如程序清單A所示



用SimpleDateFormat向用戶顯示日期

SimpleDateFormat處理顯示日期的最常用需求它可以用來把日期轉換為特定的保存格式你可以采用以下的導入指示符
〈%@ page import="javatextSimpleDateFormat" %〉

以下的代碼給用戶顯示日期
SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy");
outprint("〈br〉" + formatterformat(calgetTime()) );

SimpleDateFormat對象接受一個字符串作為其對象構造器該字符串參數包含了用戶希望采用的顯示格式這個格式字符串可以包含額外的格式字符串比如空格(“ ”)反斜線( “/”)和破折號(“”)

表A列出了所有有效的(常用的)顯示格式

表A

格式
示例

“dd/MMM/yyyy”
/Mar/

"ddMMyyyy"


"dd MMMMMMMMM yyyy"
March

"EEEEEEEEE MMMMMMMMM dd yyyy"
Wednesday March


有效的SimpleDateFormat顯示格式



表B是SimpleDateFormat參數的縮略語表

表B

y
year

M
month in year

d
day in month

D
day in year

w
week in year

W
week in month

E
day in week


SimpleDateFormat參數


重用代碼FormatTitle

在同一頁面上實施多種格式轉換有個簡單方法在Declaration元素中是聲明FormatTitle方法它接受兩個參數一個引用Calendar對象另一個返回格式
〈%!
public String FormatTitle(Calendar fCal String format)
{
SimpleDateFormat formatter = new SimpleDateFormat(format);
return (formatterformat(fCalgetTime() ));
}
%〉

為了顯示日期我們調用FormatTitle()並為其傳遞Calendar和格式字符串參數
〈%=FormatTitle(cal “ddMMMyyyy”)%〉


小結

學完以上的簡單教程相信你現在應該能用Calendar和SimpleDateFormat對象操作和顯示日期了

add()和set()方法可以輕松配置Calendar促使你可以為商業應用程序遍歷月份和年數FormatTitle方法可以大大簡化給用戶顯示日期的任務同樣的它還簡化了把日期轉換為字符串的操作而這一操作主要應用在數據庫和XML文檔的數據保存方面


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20491.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.