packagecom.anjoyo.chen;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Scanner;
publicclassTestSimpleDateFormat {
publicstaticvoidmain(String[] args) {
Date d = newDate();
SimpleDateFormat sdf = newSimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");//定义要使用的日期和时间的格式
String s = sdf.format(d);
System.out.println(s);//2012年11月23日 19时56分54秒 星期五
Scanner sc = newScanner(System.in);
System.out.println("请按照格式输入:");
String str = sc.nextLine();//2012年11月23日 19时56分54秒 星期五
try{
System.out.println(sdf.parse(str)); //Fri Nov 23 19:56:54 CST 2012
} catch(ParseException e) {
e.printStackTrace();
}
}
}
由程序可以看出,我们使用SimpleDateFormat类来格式化日期。这里要说明的是,我们打开java的帮助文档,发现在SimpleDateFormat中format()方法是这么定义的:
public StringBuffer format(Date date, StringBuffer toAppendTo,FieldPosition pos);
这里定义的format方法传入了三个参数,为什么我们在程序中只传入了一个Date类型的对象d就可以了呢?
其实,SimpleDateFormat类继承自DateFormat类,在DateFormat类中,有public final String format(Date date)方法的定义,这样呢,SimpleDateFormat就继承了父类的这个方法,它和SimpleDateFormat本事中的format方法输入重载的关系,所以我们可以直接使用。
这里再啰嗦一下重载和重写:
假如子类中的方法和父类中的方法名字相同,如果:
1 参数不同,相当于方法的重载,发生在同一类中(子类)。这里的参数不同包括参数类型个数和次序不同等。
2 参数相同,叫方法的重写(覆盖),发生在父子类之间。
方法重写的要求:
1 同名且同参
2 方法的返回值也相同
3 子类方法修饰符不能比父类的方法修饰符更封闭(要么相同,要么更开放)
访问控制修饰符:private protected --- private 顺序:从封闭到开放
4 子类方法抛出的异常类型不能比父类方法抛出的异常类型更宽泛(或者说更大,更上层)