java的实用工具类库java.util包。在这个包中,java提供了一些实用的方法和数据结构。例如,java提供日期(data)类、日历(calendar)类来产生和获取日期及时间,提供随机数(random)类产生各种类型的随机数,还提供了堆栈(stack)、向量(vector) 、位集合(bitset)以及哈希表(hashtable)等类来表示相应的数据结构。图1给出了java.util包的基本层次结构图。下面我们将具体介绍其中几个重要的类。

1.2 日期类date
java在日期类中封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间。date类中有很多方法在jdk1.0公布后已经过时了,在8.3中我们将介绍jdk1.0中新加的用于替代date的功能的其它类。
在日期类中共定义了六种构造函数。
(1)public date()
创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间。例:
date today=new date();
//today被设置成创建时刻相对应的日期时间。
(2)public date (long date)
long 型的参数date可以通过调用date类中的static方法parse(string s)来获得。例:
long l=date.parse("mon 6 jan 1997 13:3:00");
date day=new date(l);
//day中时间为1997年 1月6号星期一,13:3:00
(3)public date(string s)
按字符串s产生一日期对象。s的格式与方法parse中字符串参数的模式相同。例:
date day=new date("mon 6 jan 1997 13:3:00");
//day 中时间为1997年1月6号星期一,
13:3:00
(4)public date(int year,int month,int date)
(5)public date(int year,int month,int date,int hrs,int min)
(6)public date(int year,int month,int date,int hrs,int min,int sec)
按给定的参数创建一日期对象。
参数说明:
year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以date中可设定的年份最小为1900;
month的值域为0~11,0代表1月,11表代表12月;
date的值域在1~31之间;
hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;
min和sec的值域在0~59之间。
例:
date day=new date(11,3,4);
//day中的时间为:04-apr-11 12:00:00 am
另外,还可以给出不正确的参数。例 设定时间为1910年2月30日,它将被解释成3月2日。
date day=new date(10,1,30,10,12,34);
system.out.println("day's date is:"+day);
//打印结果为:day's date is:
web mar 02 10:13:34 gmt+08:00 1910
下面我们给出一些date类中常用方法。
(1)
public static long utc(int year,
int month,int date,int hrs.
int min,int sec)
该方法将利用给定参数计算utc值。utc是一种计时体制,与gmt(格林威治时间)的计时体系略有差别。utc计时体系是基于原子时钟的,而gtmt计时体系是基于天文学观测的。计算中使用的一般为gmt计时体系。
(2)public static long parse(string s)
该方法将字符串s转换成一个long型的日期。在介绍构造方法date(long date)时曾使用过这个方法。
字符串s有一定的格式,一般为:
(星期 日 年 时间gmt+时区)
若不注明时区,则为本地时区。
(3)public void setmonth(int month)
(4)public int getmonth()
这两个方法分别为设定和获取月份值。
获取的月份的值域为0~11,0代表1月,11代表12月。
(5)public string tostring()
(6)public string tolocalstring()
(7)public string togmtstring()
将给定日期对象转换成不同格式的字符串。它们对应的具体的格式可参看例子8.1。
(8)public int gettimezoneoffset()
该方法用于获取日期对象的时区偏移量。
例8.1中对上面介绍的date类中的基本方法进行了具体的应用,并打印了相应的结果。由于使用了一些过时的方法,所以编译时会有警告信息。另外,由于本例中的时间表示与平台有关,不同的jdk版本对此处理不完全相同,因此不同版本的jdk执行本例的结果可能有细微差异。
例1.1 dateapp.java
import java.lang.system;
import java.util.date;
public class dateapp
{
public static void main(string args[])
{
date today=new date();
//today中的日期被设成创建时刻的日期和时间,
假设创建时刻为1997年3月
//23日17时51分54秒。
system.out.println("today's date is "+today);
//返回一般的时间表示法,
本例中结果为
//today's date is fri may 23 17:51:54 1997
system.out.println("today's
date(internet gmt)is:"
+today.togmtstring());
//返回结果为gmt时间表示法,
本例中结果为
//today's date(internet gmt)is:
23 may 1997 09:51:54:gmt
system.out.println("today's
date(locale) is:"
+today.tolocalestring());
//返回结果为本地习惯的时间表示法,
结果为
//today's date(locale)is:
05/23/97 17:51:54
system.out.println("today's year is:
"+today.getyear());
system.out.println("today's month is:
"+(today.getmonth()+1));
system.out.println("today's date is:
"+today.getdate());
//调用date类中方法,获取年月日的值。
//下面调用了不同的构造方法来创建date类的对象。
date day1=new date(100,1,23,10,12,34);
system.out.println
("day1's date is: "+day1);
date day2=new date
("sat 12 aug 1996 13:3:00");
system.out.println
("day2's date is: "+day2);
long l= date.parse
("sat 5 aug 1996 13:3:00 gmt+0800");
date day3= new date(l);
system.out.println
("day3's date(gmt)is:
"+day3.togmtstring());
system.out.println
("day3's date(locale)is: "
+day3.tolocalestring());
system.out.println
("day3's time zone offset is:"
+day3.gettimezoneoffset());
}
}
运行结果(jdk1.3版):
e:/java/tutorial/java01>java dateapp
today's date is thu dec 27 17:58:16 cst 2001
today's date(internet gmt)is:27 dec 2001 09:58:16 gmt
today's date(locale) is:2001-12-27 17:58:16
today's year is: 101
today's month is: 12
today's date is: 27
day1's date is: wed feb 23 10:12:34 cst 2000
day2's date is: fri aug 12 13:03:00 cst 1996
day3's date(gmt)is: 5 aug 1996 05:03:00 gmt
day3's date(locale)is: 1996-8-5 13:03:00
day3's time zone offset is:-480
e:/java/tutorial/java01>
1.3 日历类calendar
在早期的jdk版本中,日期(date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在jdk1.1中提供了类calendar来完成第一种功能,类dateformat来完成第二项功能。
dateformat是java.text包中的一个类。与date类有所不同的是,dateformat类接受用各种语言和不同习惯表示的日期字符串。本节将介绍java.util包中的类calendar及其它新增加的相关的类。
类calendar是一个抽象类,它完成日期(date)类和普通日期表示法(即用一组整型域如year,month,day,hour表示日期)之间的转换。
由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同。在jdk1.1中提供了calendar类一个子类gregoriancalendar??它实现了世界上普遍使用的公历系统。当然用户也可以通过继承calendar类,并增加所需规则,以实现不同的日历系统。
第gregoriancalendar继承了calendar类。本节将在介绍类gregoriancalendar的同时顺带介绍calendar类中的相关方法。
类gregoriancalendar提供了七种构造函数:
(1)public gregoriancalendar()
创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间。
(2)public gregoriancalendar(timezone zone)
创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间。
(3)public gregoriancalendar(locale alocale)
创建的对象中的相关值被设置成缺省时区,指定地点alocale的当前时间。
(4)public gregoriancalendar(timezone zone,local alocale)
闽公网安备 35060202000074号