澳门威斯尼斯人娱乐平台_龟发之家论坛
作者: BUILDER.COM
在开拓有关日历的利用法度榜样时,不规则的每月日期数、每周天数和周末的谋略不停是个很费脑子的问题。结果,日期和光阴的编程常常令法度榜样员新手畏缩不前。本文将演示在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 = C澳门威斯尼斯人娱乐平台alendar.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", "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显示款式
表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 (formatter.format(fCal.getTime() ));
}
%〉
为了显示日期,我们调用FormatTitle()并为其通报Calendar和款式字符串参数。
〈%=FormatTi澳门威斯尼斯人娱乐平台tle(cal, “dd-MMM-yyyy”)%〉
小结
学完以上的简单教程,信托你现在应该能用Calendar和SimpleDateFormat工具操作和显示日期了。
add()和set()措施可以轻松设置设置设备摆设摆设Calendar,匆匆使你可以为商业利用法度榜样遍历月份和年数。FormatTitle措施可以大年夜大年夜简化给用户显示日期的义务,同样的,它还简化了把日期转换为字符串的操作,而这一操作主要利用在数据库和XML文档的数据保存方面。
摘自:Net China 光阴:2003年1月13日