都是用来格式化时间的。常用的方法是parse和format,parse是将String形式的时间转成Date类型,format是将Date时间转成String。
DateFormat是一个抽象类,很少直接使用,可以根据Locate指定的区域不同得到不同的日期时间显示效果。
一般是用SimpleDateFormat,其继承自DateFormat。
二者都不是同步的,所以建议为每个线程创建独立的格式实例,如果多个线程同时访问一个格式,则它必须保持外部同步。
所以不要定义static的SimpleDateFormat对象,不然findbugs会提示“Call to method of static java.text.DateFormat“。
只看下面的例子就一清二楚了:
- 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)) ; // 将日期变为新的格式
- }
pat1的形式尽量和strDate一样,也可以比它短,后面部分解析出来是0,但分隔符得一致,否则抛异常。