java常用类库续1(日期操作类Date、Calendar、DateFormat、SimpleDateFormat、Math与Random类)

时间:2021-06-03 18:09:50
  

日期操作类(Date、Calendar)

Date类

Date类是一个比较常用的类,但是其操作的日期格式会有一些不符合个人的要求,而如果想进一步取得自己想要的时间,则可以使用Calendar类。

代码示例:
import java.util.Date;
public class DateDemo01
{
	public static void main(String args[]){
		Date date=new Date();
		System.out.println("当前时间:"+date);
		//程序输出:
		//当前时间:Fri Aug 05 11:07:46 CST 2011
	}
}

很显然Date类虽然可以直接打印,但是其时间格式并不是我们想要的,那么可以使用Calendar类。

Calendar类

Calendar类可以取得时间精确到毫秒,但是,这个类本身是一个抽象类,如果要想使用一个抽象类,则必须依靠对象的多态性,通过子类进行父类的实例化操作,calendar的子类是GregorianCalendar

在Calendar类中有一系列的常量,在其子类GregorianCalendar类中有get()方法。代码如下:
import java.util.*;
public class DateDemo02
{
	public static void main(String args[]){
		Calendar calendar=new GregorianCalendar();
		 System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
		 System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
		 System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
		 System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
		 System.out.println("DATE: " + calendar.get(Calendar.DATE));
		 System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
		 System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
		 System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
		 System.out.println("DAY_OF_WEEK_IN_MONTH: "
				+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		 System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
		 System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
		 System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
		 System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
		 System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
		 System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
		 System.out.println("ZONE_OFFSET: "
							+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
		 System.out.println("DST_OFFSET: "
				+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));


	}
}

日期操作类(DateFormat、SimpleDateFormat)

DateFormat类

此类是一个日期格式化的类,专门格式化日期的操作,因为java.util.Date类本身就已经包含了完整的日期,所以只需要将此日期按照格式化好的格式进行操作就可以了。

代码如下:(注意观察DateFormat类中的getDateInstance()和getDateTimeFormat()两个方法)

import java.util.Date;
import java.text.DateFormat;
import java.text.Format;
public class DateDemo03
{
	public static void main(String args[]){
		DateFormat df1=null;	//声明一个DateFormat
		DateFormat df2=null;	//声明一个DateFormat
		df1=DateFormat.getDateInstance();	//得到日期的DateFormat对象
		df2=DateFormat.getDateTimeInstance();	//得到日期时间的DateFormat对象
		System.out.println("DATE:"+df1.format(new Date()));	//输出DateFormat内部定义好格式的日期格式
		System.out.println("DATETIME:"+df2.format(new Date()));	//输出DateFormat内部定义好格式的日期时间格式

	}
}

SimpleDateFormat类

在使用SimDateFormat类的时候,必须注意的是在构造对象时要传入匹配的模板。

构造方法:public SimpleDateFormat(String pattern)

转换:public Date parse(String source) throws ParseExceptioà此时取得是全部的时间数。

格式化:public final String format(Date date)à将时间格式化为指定好多的字符串格式。

import java.text.* ;
import java.util.* ;
public class DateDemo05{
	public static void main(String args[]){
		String strDate = "2008-10-19 10:11:30.345" ;
		// 准备第一个模板,从字符串中提取出日期数字
		String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ;
		// 准备第二个模板,将提取后的日期数字变为指定的格式
		String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ;
		SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ;		// 实例化模板对象
		SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ;		// 实例化模板对象
		Date d = null ;
		try{
			d = sdf1.parse(strDate) ;	// 将给定的字符串中的日期提取出来
		}catch(Exception e){			// 如果提供的字符串格式有错误,则进行异常处理
			e.printStackTrace() ;		// 打印异常信息
		}
		System.out.println(sdf2.format(d)) ;	// 将日期变为新的格式
	}
};

示例:通过Calendar获得当前时间

import java.text.* ;
import java.util.* ;
class DateTime
{
	private Calendar calendar=null;
	public DateTime(){	//通过构造方法实例化Calendar对象
		calendar=new GregorianCalendar();
	}
	public String getDate(){	
		StringBuffer buf=new StringBuffer();	//实例化StringBuffer对象
		buf.append(calendar.get(Calendar.YEAR)).append("年");;	//输出年
		buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)).append("月");	//输出月份 同时进行补0和加1操作
		return buf.toString();
	}
	public StringBuffer addZero(int month,int len){		//如果月份是1位数,则补0
		StringBuffer buf=new StringBuffer();
		buf.append(month);
		while(buf.length()<len){
			buf.insert(0,"0");
		}
		return buf;
	}
}
public class DateDemo05{
	public static void main(String args[]){
		DateTime date=new DateTime();
		System.out.println(date.getDate());		//打印当前年月
	}
};

Math与Random类

具体内容

表示数学操作,比如平方根、四舍五入等

public class MathDemo01{
	public static void main(String args[]){
		// Math类中的方法都是静态方法,直接使用“类.方法名称()”的形式调用即可
		System.out.println("求平方根:" + Math.sqrt(9.0)) ;
		System.out.println("求两数的最大值:" + Math.max(10,30)) ;
		System.out.println("求两数的最小值:" + Math.min(10,30)) ;
		System.out.println("2的3次方:" + Math.pow(2,3)) ;
		System.out.println("四舍五入:" + Math.round(33.6)) ;
		System.out.println("四舍五入:" + Math.round(-1.6)) ;	//-2
		System.out.println("四舍五入:" + Math.round(-1.5)) ;	//-1
	}
};

注意:Math.round()方法中,如果参数是正数,则会进行四舍五入的操作,但是如果是负数的话负数的十分位从6开始进行接近较近的负数。

Random类一的主要功能是产生随机数,可以产生一个指定范围的随机数,Random类定义在java.util包中

import java.util.Random;
public class RandomDemo01{
	public static void main(String args[]){
		Random r=new Random();	//实例化Random对象
		System.out.println(r.nextInt(100));		//产生的随机数都小于100
	}
};