`
isiqi
  • 浏览: 16050341 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JSP中日期的用法

阅读更多
JSP中日期的用法

 
在开发有关日历的应用程序时,不规则的每月日期数、每周天数和周末的计算一直是个很费脑筋的问题。结果,日期和时间的编程经常令程序员新手畏缩不前。本文将演示在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", "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和格式字符串参数。
〈%=FormatTitle(cal, “dd-MMM-yyyy”)%〉


小结

学完以上的简单教程,相信你现在应该能用Calendar和SimpleDateFormat对象操作和显示日期了。

add()和set()方法可以轻松配置Calendar,促使你可以为商业应用程序遍历月份和年数。FormatTitle方法可以大大简化给用户显示日期的任务,同样的,它还简化了把日期转换为字符串的操作,而这一操作主要应用在数据库和XML文档的数据保存方面。
分享到:
评论

相关推荐

    jsp日期控件,里面有例子,讲解很详细

    js实现的日期选择控件 可以import到eclipse里面运行 有实例可供参考 例子里面各种用法很全面 讲解很详细

    JSP实用技巧集合,jsp编程的一些小技巧总结

    73. JSP中显示图片的方法之一? 74. int转为Integer的方法? 75. 请求jsp页面禁止缓存方法? 76. select选中其中的值自动到一个文本框? 77. JSP连接数据库? 78. JSP两级下拉列表框联动(数据库)? 79. JSP字符编码问题...

    JSP实例编程100例

    63、JSP 使用 JavaBean 的方法 64、JSP 使用 JavaBean 65、范围为 Page 的 JavaBean范例程序 66、范围为 Request的 JavaBean 67、范围为 Session 的 JavaBean 68、范围为 Application 的 JavaBean 69、删除 JavaBean...

    日期控件My97DatePicker的使用

    日期控件My97DatePicker的使用 日期控件My97DatePicker的使用

    My97DatePicker jsp 实例

    My97DatePicker jsp 实例 日期控件 现成的项目,导入就可以直接使用

    jsp编程技巧集锦

    数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...

    日期使用源代码

    网页JSP日期使用的方法源代码,以及插件使用。

    jsp网络编程从基础到实践

    第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 ...

    JSP网络编程从基础到实践

    实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 ...

    带上传的JSP网页编辑器插件.rar

    用法说明:  \htmleditor\editor\upapi\upfile.jsp 这个文件是上传文件  以下是此文件的参数说明:  String url = "upload/"; 原图上传地址  String url2 = "upload/s/"; 缩略图上传地址  String geShi = ...

    JSP网络编程从基础到实践的实例代码

    第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 ...

    适用于jsp页面的非常好用的日历控件

    使用方法:在jsp页面中加入代码<script language="javascript" type="text/javascript" src="calendar/WdatePicker.js"></script> ,然后再 onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" />就可以了

    简单的JS日期控件

    一个简单的日期控件脚本,使用方法:先在JSP中引用该脚本,例子如下: 结束日期: <input type="text" name="endDate" id="endDate" size="26" value="<c:out value='${endDate}'/>" onclick=...

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    JSPExample5.jsp JSP页面中字符数据的简单使用 JSPExample6.jsp 结合布尔类型变量判断学生成绩等级 JSPExample7.jsp text.html页面提交至该页,并显示提交数据 text.html 页面数据提交至...

    JSP中常用的JSTL fmt(format格式化)标签用法整理

    同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为: <%@ taglib prefix=”fmt” uri=”...

    JSP网络编程从基础到实践 实例代码

    第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 ...

    《JSP简明教程》课件

    对于最小型的Web站点,可以直接使用JSP来构建动态网页,这种站点最为简单,所需要的仅仅是简单的留言板、动态日期等基本的功能。 JSP+JavaBeans。中型站点面对的是数据库查询、用户管理和小量的商业业务逻辑。对于...

    基于JSP的博客系统论文+源码+数据库

    它被解释为一个特定的软件系统, 被用来在网络上出版、发表和张贴个人的文章并且通常是由简短且经常更新的帖子所构成,这些张贴的文章都按照年份和日期倒序排列。Blog的内容和目的有很大的不同,从对其他网站的超级...

Global site tag (gtag.js) - Google Analytics