程序运行后,gc1和gc2被变成2001年(因为两个对象指向同一个Date,而Date已经被改变了)。对象gc3指向一个单独的Date,它没有被改变。
计算复习日期
在这节,你将看到一个依据现实世界的例子。这个详细的程序计算过去一个具体的日期。例如,你阅读这篇文章,你想要记住一个印象深刻的知识点。如果你没有照片一样的记忆力,你就要定期的复习这些新资料,这将帮助你记住它。关于复习系统,KurtHanks和GerreldL.Pulsipher在他们的 这个程序非常有用的,它将是PIM(PersonalInformationManager个人信息管理器)的一个组成部分,并将确定复习时间。在下面的程序中,getDates()方法对一个返回日期数组(复习日期)的电子软件很有用。另外,你可以返回单独的一个日期,使用getFirstDay(),getOneDay(),getOneWeek(),getOnMonth()和getOneYear().当时间范围超出这个PIM的ReviewDates的计算范围时ReviewDates类演示了怎样计算时间段。现在,你可以容易的修改它用来处理你需要的时间段,象图书馆借书,录影带租赁和抵押计算。首先,ReviewDates类显示在下面: importjava.util.*; importjava.text.*; privateGregorianCalendarfirstDay,oneDay,oneWeek,oneMonth,oneQuarter,oneYear; finalintdateArraySize=6; intyear=gcDate.get(GregorianCalendar.YEAR); intmonth=gcDate.get(GregorianCalendar.MONTH); intdate=gcDate.get(GregorianCalendar.DATE); oneDay=newGregorianCalendar(year,month,date); oneWeek=newGregorianCalendar(year,month,date); oneMonth=newGregorianCalendar(year,month,date); oneQuarter=newGregorianCalendar(year,month,date); oneYear=newGregorianCalendar(year,month,date); oneWeek.add(GregorianCalendar.DATE,7); oneMonth.add(GregorianCalendar.MONTH,1); oneQuarter.add(GregorianCalendar.MONTH,3); oneYear.add(GregorianCalendar.YEAR,1); } this(newGregorianCalendar()); } DateFormatdf=DateFormat.getDateInstance(DateFormat.LONG); DatestartDate=firstDay.getTime(); Datedate1=oneDay.getTime(); Datedate2=oneWeek.getTime(); Datedate3=oneMonth.getTime(); Datedate4=oneQuarter.getTime(); Datedate5=oneYear.getTime(); Stringss1=df.format(date1); Stringss2=df.format(date2); Stringss3=df.format(date3); Stringss4=df.format(date4); Stringss5=df.format(date5); System.out.println("Followingreviewdatesare:"); System.out.println(ss1); System.out.println(ss2); System.out.println(ss3); System.out.println(ss4); System.out.println(ss5); System.out.println(); } GregorianCalendar[]memoryDates=newGregorianCalendar[dateArraySize]; memoryDates[0]=firstDay; memoryDates[1]=oneDay; memoryDates[2]=oneWeek; memoryDates[3]=oneMonth; memoryDates[4]=oneQuarter; memoryDates[5]=oneYear; returnmemoryDates; } returnthis.firstDay; } returnthis.oneDay; } returnthis.oneWeek; } returnthis.oneMonth; } returnthis.oneQuarter; } returnthis.oneYear; } }
下面是使用ReviewDates类列出复习日期的例子程序: importjava.util.*; publicstaticvoidmain(String[]args){ ReviewDatesrd=newReviewDates(); rd.listDates(); ReviewDatesjan15=newReviewDates(gc); jan15.listDates(); } }
总结
这篇文章介绍了关于日期处理的3个重要的类:Date,DateFormat,GregorianCalendar.这些类让你创建日期,转换成字符串,和计算日期基本元素。处理Java中的日期问题,这篇文章只是冰山一角。可是,我在这里介绍的类和方法不仅仅是你学习高级技术的跳板,这些类和方法本身就可以处理很多通常的日期相关的任务。
publicclassReviewDates{
ReviewDates(GregorianCalendargcDate){
firstDay=newGregorianCalendar(year,month,date);
oneDay.add(GregorianCalendar.DATE,1);
ReviewDates(){
publicvoidlistDates(){
Stringss=df.format(startDate);
System.out.println("Startdateis"+ss);
publicGregorianCalendar[]getDates(){
publicGregorianCalendargetFirstDay(){
publicGregorianCalendargetOneDay(){
publicGregorianCalendargetOneWeek(){
publicGregorianCalendargetOneMonth(){
publicGregorianCalendargetOneQuarter(){
publicGregorianCalendargetOneYear(){
publicclassShowDates{
GregorianCalendargc=newGregorianCalendar(2001,Calendar.JANUARY,15);

