
本站地址:http://www.bajiao123.com

Java.util包简介并教您如何开发应用之二
(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)
Date day=new Date(11,3,4);
//day中的时间为:04-Apr-11 12:00:00 AM
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
public static long UTC(int year,
int month,int date,int hrs.
int min,int sec)
(3)public void setMonth(int month)
(4)public int getMonth()
(5)public String toString()
(6)public String toLocalString()
(7)public String toGMTString()
(8)public int getTimezoneOffset()
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());
}
}
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)
创建的对象中的相关值被设置成指定时区,指定地点的当前时间。
上面使用到的类TimeZone的性质如下:
TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每一个时区对应一组ID。类TimeZone提供了一些方法完成时区与对应ID两者之间的转换。
(Ⅰ)已知某个特定的ID,可以调用方法
public static synchronized TimeZone getTimeZone(String ID) 来获取对应的时区对象。
例
太平洋时区的ID为PST,用下面的方法可获取对应于太平洋时区的时区对象:
TimeZone tz=TimeZone.getTimeZone("PST");
调用方法getDefault()可以获取主机所处时区的对象。
TimeZone tz=TimeZone.getDefault();
(Ⅱ)调用以下方法可以获取时区的ID
public static synchronized String[]
getavailableIDs(int rawOffset)
根据给定时区偏移值获取ID数组。同一时区的不同地区的ID可能不同,这是由于不同地区对是否实施夏时制意见不统一而造成的。
例
String s[]=TimeZone.getAvailableIDs(-7*60*60*1000);
打印s,结果为s[0]=PNT,s[1]=MST
public static synchronized String[] getAvailableIDs()
获取提供的所有支持的ID。
public String getID()
获取特定时区对象的ID。
例:
TimeZone tz=TimeZone.getDefault();
String s=tz.getID();
打印s,结果为s=CTT。
上面使用类的对象代表了一个特定的地理、政治或文化区域。Locale只是一种机制,它用来标识一类对象,Local本身并不包含此类对象。要获取一个Locale的对象有两种方法:
(Ⅰ)调用Locale类的构造方法:
Locale(String language,String country)
Locale(String language,
String country,String variant)
(Ⅱ)调用Locale类中定义的常量
Local类提供了大量的常量供用户创建Locale对象。
例 Locale.CHINA
为中国创建一个Locale的对象。
类TimeZone和类Locale中的其它方法,读者可查阅API。
(5)public GregorianCalendar(int year,int month,int date)
(6)public GregorianCalendar(int year,int month,int date,int hour,int minute)
(7)public GregorianCalendar(int year,int month,int date,int hour,int minute,int second)
用给定的日期和时间创建一个GregorianCalendar的对象。
参数说明:
year-设定日历对象的变量YEAR;month-设定日历对象的变量MONTH;
date-设定日历对象的变量DATE;hour-设定日历对象的变量HOUR_OF_DAY;
minute-设定日历对象的变量MINUTE;second-设定日历对象的变量SECOND。
与Date类中不同的是year的值没有1900这个下限,而且year的值代表实际的年份。month的含义与Date类相同,0代表1月,11代表12月。
例 GregorianCalendar cal=new GregorianCalendar(1991,2,4)
cal的日期为1991年3月4号。
除了与Date中类似的方法外,Calendar类还提供了有关方法对日历进行滚动计算和数学计算。计算规则由给定的日历系统决定。进行日期计算时,有时会遇到信息不足或信息不实等特殊情况。Calendar采取了相应的方法解决这些问题。当信息不足时将采用缺省设置,在GregorianCalendar类中缺省设置一般为YEAR=1970,MONTH=JANUARY,DATE=1。
当信息不实时,Calendar将按下面的次序优先选择相应的Calendar的变量组合,并将其它有冲突的信息丢弃。
MONTH+DAY_OF_MONTH
MONTH+WEEK_OF_MONTH+DAY_OF_WEEK
MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK
DAY_OF+YEAR
DAY_OF_WEEK_WEEK_OF_YEAR
HOUR_OF_DAY
1.4 随机数类Random
Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。它可以产生int、long、float、double以及Goussian等类型的随机数。这也是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数。
类Random中的方法十分简单,它只有两个构造方法和六个普通方法。
构造方法:
(1)public Random()
(2)public Random(long seed)
Java产生随机数需要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed。
普通方法:
(1)public synonronized void setSeed(long seed)
该方法是设定基值seed。
(2)public int nextInt()
该方法是产生一个整型随机数。
(3)public long nextLong()
该方法是产生一个long型随机数。
(4)public float nextFloat()
该方法是产生一个Float型随机数。
(5)public double nextDouble()
该方法是产生一个Double型随机数。
(6)public synchronized double nextGoussian()
该方法是产生一个double型的Goussian随机数。
例1.2 RandomApp.java。
//import java.lang.*;
import java.util.Random;
public class RandomApp
{
public static void main(String args[])
{
Random ran1=new Random();
Random ran2=new Random(12345);
//创建了两个类Random的对象。
System.out.println
("The 1st set of random numbers:");
System.out.println
("\t Integer:"+ran1.nextInt());
System.out.println
("\t Long:"+ran1.nextLong());
System.out.println
("\t Float:"+r
本站地址:http://www.bajiao123.com

