仓酷云

标题: JAVA网页编程之JSP中日期的用法 [打印本页]

作者: 小魔女    时间: 2015-1-18 11:08
标题: JAVA网页编程之JSP中日期的用法
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:js|日期BUILDER.COM

在开辟有关日历的使用程序时,不划定规矩的每个月日期数、每周天数和周末的盘算一向是个很费头脑的成绩。了局,日期和工夫的编程常常令程序员老手勇往直前。本文将演示在JSP使用程序中日期的用法,为读者完成某些罕见义务供应便利的参考。


目标



示例使用程序的目标是:

经由过程HTML表单把日期参数提交某个JSP页来处置。
吸收日期参数并创立Calendar对象。
接纳Calendar对象找出提交的日期是一周的第几天和选中月份里有几事情日。
用用户易于浏览的显现格局对日期格局化。

情况

示例程序代码在JavaWeb服务器上承受测试,该服务器设置了JDK1.31。示例写得很尺度,在Tomcat大概其他JSPWeb服务器(JDK1.2大概今后版本)上运转的效果几近完整一样。

经由过程表单把日期传送给JSP页

Date(日期)参数是用户从3栏下拉列表当选出来的。用户提交表单以后,这些参数即被传送给处置页面。

在举行日历编程时不要忘了导进java.util.Calendar:
〈%@pageimport="java.util.Calendar"%〉

处置页面的第1个义务是吸收以下日期参数值:Date、Month和Year。
intcurDate=1;
if(request.getParameter("curDate")!=null)
{
curDate=Integer.parseInt(request.getParameter("curDate"));
}

注重页面参数被转换为int范例,即刻我们就晓得为何要这么做了。



Calendar对象

我们的方针是创立和设置一个Calendar对象,用它举行日期盘算。为此,我们起首必要实例化一个Calendar对象。
Calendarcal=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()办法举行会见,了局前往一个整数。以下代码示例显现了以上历程。

一周内的日期
intdayOfWeek=cal.get(cal.DAY_OF_WEEK);
out.print("〈br〉DayofWeek:"+dayOfWeek+"〈br〉");

一月内的日期
intdayOfMonth=cal.get(cal.DAY_OF_MONTH);
out.print("〈br〉DayofMonth:"+dayOfMonth+"〈br〉");

定位特定的日期



为了找出一周内特定的某一天就必需会见DAY_OF_WEEK字段。该字段包括了局限从1到7的整数值,1代表礼拜一,2代表礼拜二,其他以次类推。
intdayOfWeek=cal.get(cal.DAY_OF_WEEK);

这里有个向用户显现日期的好办法,那就是声明一个包括一周内天数的数组。然后就能够很便利地显现各个日期了。只需接纳DAY_OF_WEEK整数会见数组内确当前日期便可。
String[]weekdays=newString[]
{“”,"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字段的值和数组援用相婚配了。



找出周末
为了找出某天是不是恰好是礼拜天大概礼拜六能够编写以下代码:
intday=cal.get(cal.DAY_OF_WEEK);
if(day==6||day==7)
{
//实行与周末有关的操纵
}



事情日

如今我们必要盘算出某个月内的事情日天数。用户输出日期(参看index.jsp)以后把参数发送给处置页面(参看display.jsp)。在处置页面上,我们把Calendar对象设置为该月的第1天。
cal.clear();
cal.set(curYear,curMonth,1);
intmaxDays=cal.getActualMaximum(cal.DATE);
out.print("〈br〉Numberofdaysinmonth:"+maxDays+"〈br〉");

我们还必要晓得某个月内究竟有几天。getActualMaximum()办法前往一个整数值,该值就包括了每月内的最多天数:2月是28天,3月是31天等等。在闰年的话2月的天数前往29天。

一旦我们失掉了每月内的最多天数,我们就能够很便利地轮回每个月天数判别是不是是周末大概事情一日。我们用add()办法给Calendar递增1,如程序清单A所示。



用SimpleDateFormat向用户显现日期

SimpleDateFormat处置显现日期的最经常使用需求,它能够用来把日期转换为特定的保留格局。你能够接纳以下的导进唆使符:
〈%@pageimport="java.text.SimpleDateFormat"%〉

以下的代码给用户显现日期:
SimpleDateFormatformatter=newSimpleDateFormat("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

"ddMMMMMMMMMyyyy"
06March1974

"EEEEEEEEE,MMMMMMMMMdd,yyyy"
Wednesday,March06,1974


无效的SimpleDateFormat显现格局



表B是SimpleDateFormat参数的缩略语表。

表B

y
year

M
monthinyear

d
dayinmonth

D
dayinyear

w
weekinyear

W
weekinmonth

E
dayinweek


SimpleDateFormat参数


重用代码--FormatTitle

在统一页面上实行多种格局转换有个复杂办法:在Declaration元素中是声明FormatTitle办法,它承受两个参数,一个援用Calendar对象,另外一个前往格局。
〈%!
publicStringFormatTitle(CalendarfCal,Stringformat)
{
SimpleDateFormatformatter=newSimpleDateFormat(format);
return(formatter.format(fCal.getTime()));
}
%〉

为了显现日期,我们挪用FormatTitle()并为其传送Calendar和格局字符串参数。
〈%=FormatTitle(cal,“dd-MMM-yyyy”)%〉


小结

学完以上的复杂教程,信任你如今应当能用Calendar和SimpleDateFormat对象操纵和显现日期了。

add()和set()办法能够轻松设置Calendar,促使你能够为贸易使用程序遍历月份和年纪。FormatTitle办法能够年夜年夜简化给用户显现日期的义务,一样的,它还简化了把日期转换为字符串的操纵,而这一操纵次要使用在数据库和XML文档的数据保留方面。
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
作者: 因胸联盟    时间: 2015-1-20 15:02
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 爱飞    时间: 2015-1-21 06:27
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 飘灵儿    时间: 2015-1-21 10:56
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 深爱那片海    时间: 2015-1-30 16:10
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 山那边是海    时间: 2015-2-6 13:58
是一种突破用户端机器环境和CPU
作者: 蒙在股里    时间: 2015-2-16 09:34
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 分手快乐    时间: 2015-3-5 03:30
是一种使用者不需花费很多时间学习的语言
作者: 第二个灵魂    时间: 2015-3-11 23:05
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 柔情似水    时间: 2015-3-19 15:54
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 透明    时间: 2015-3-28 17:54
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2