日期操作类(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
}
};