JSP定位特定的日期

发表于:2007-07-04来源:作者:点击数: 标签:
为了找出一周内特定的某一天就必须访问DAY_OF_WEEK字段。该字段包含了范围从1到7的整数值,1代表星期一,2代表星期二,其余以次类推。 int dayOfWeek = cal.get(cal.DAY_OF_WEEK); 这里有个向用户显示日期的好方法,那就是声明一个包含一周内天数的数组。然
为了找出一周内特定的某一天就必须访问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", "Thursday", "Friday", "Saturday", "Sunday"};
<%=weekdays[cal.get(cal.DAY_OF_WEEK)]%>

注意该数组的第1个元素为空。这是因为DAY_OF_WEEK字段值的范围是从1到7,而数组元素的引用范围则是从0到6。在数组开头加一个空元素就可以保证DAY_OF_WEEK字段的值和数组引用相匹配了。

找出周末
为了找出某天是否正好是星期天或者星期六可以编写以下代码:
int day = cal.get(cal.DAY_OF_WEEK);
if(day == 6 || day == 7)
{
//执行与周末有关的操作
}



工作日

现在我们需要计算出某个月内的工作日天数。用户输入日期(参看index.jsp)之后把参数发送给处理页面(参看display.jsp)。在处理页面上,我们把Calendar对象设置为该月的第1天。
cal.clear();
cal.set(curYear, curMonth , 1);
int maxDays = cal.getActualMaximum(cal.DATE);
out.print("<br>Number of days in month: " + maxDays + "<br>");


我们还需要知道某个月内到底有多少天。getActualMaximum()方法返回一个整数值,该值就包含了每个月内的最多天数:2月是28天,3月是31天等等。在闰年的话2月的天数返回 29天。

一旦我们得到了每个月内的最多天数,我们就可以很方便地循环每月天数判断是否是周末或者工作一日。我们用add()方法给Calendar递增1,如程序清单A所示。

用SimpleDateFormat向用户显示日期

SimpleDateFormat处理显示日期的最常用需求,它可以用来把日期转换为特定的保存格式。你可以采用以下的导入指示符:
<%@ page import="java.text.SimpleDateFormat" %>

以下的代码给用户显示日期:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy");
out.print("<br>" + formatter.format(cal.getTime())  );


SimpleDateFormat对象接受一个字符串作为其对象构造器,该字符串参数包含了用户希望采用的显示格式。这个格式字符串可以包含额外的格式字符串,比如空格(“ ”)、反斜线( “/”)和破折号(“-”)。

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

格式

示例

“dd/MMM/yyyy”

06/Mar/1974

"dd-MM-yyyy"

06-03-1974

"dd MMMMMMMMM yyyy"

06 March 1974

"EEEEEEEEE, MMMMMMMMM dd, yyyy"

Wednesday, March 06, 1974

有效的SimpleDateFormat显示格式


BSimpleDateFormat参数的缩略语表。
表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 (formatter.format(fCal.getTime() ));
}
%>


为了显示日期,我们调用FormatTitle()并为其传递Calendar和格式字符串参数。
<%=FormatTitle(cal, “dd-MMM-yyyy”)%>

原文转自:http://www.ltesting.net