1. package com.anjoyo.chen; 
  2.  
  3. import java.text.ParseException; 
  4. import java.text.SimpleDateFormat; 
  5. import java.util.Date; 
  6. import java.util.Scanner; 
  7.  
  8. public class TestSimpleDateFormat { 
  9.     public static void main(String[] args) { 
  10.         Date d = new Date(); 
  11.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E"); //定义要使用的日期和时间的格式
  12.         String s = sdf.format(d); 
  13.         System.out.println(s); //2012年11月23日 19时56分54秒 星期五
  14.         Scanner sc  = new Scanner(System.in); 
  15.         System.out.println("请按照格式输入:"); 
  16.         String str = sc.nextLine(); //2012年11月23日 19时56分54秒 星期五
  17.         try { 
  18.             System.out.println(sdf.parse(str)); //Fri Nov 23 19:56:54 CST 2012
  19.         } catch (ParseException e) { 
  20.             e.printStackTrace(); 
  21.         } 
  22.     } 

由程序可以看出,我们使用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 子类方法抛出的异常类型不能比父类方法抛出的异常类型更宽泛(或者说更大,更上层)