日期操做類(DateFormat與SimpleDateFormat)的區別和實例

1.DateFormat類java

此類是一個日期的格式化類,專門格式化日期的操做,由於java.util.Date類自己就已經包含了完整的日期,因此只須要將些日期按照一些好的格式格式化一下顯示就行了.app

觀察DateFormat類的定義:此類是定義在java.test包中的。函數

public abstract class DateFormat extends Format測試

可是定義上能夠發現,此類是一個抽象類,按照以住的思路,直接使用其子類實例化便可,可是DateFormat 類自己的內部提供了能夠直接爲其實例化的操做。spa

獲得日期的DateFormat對象:public static final DateFormat getDateInstance().net

獲得日期時間的DateFormat對象:public static final DateFormat getDateTimeInstance()code

直接使用DateFormat類完成Date類的轉換功能:public final String format(Date date)orm

美式日期格式 對象

import java.text.DateFormat ;
import java.util.Date ;
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())) ; // 按照日期格式化
		System.out.println("DATETIME:" + df2.format(new Date())) ;	 // 按照日期時間格式化

	}
};

中式日期格式(經過Locale對象指定要顯示的區域,指定的區域是中國)
[java]  view plain copy
  1. import java.text.DateFormat ;  
  2. import java.util.Date ;  
  3. import java.util.Locale ;  
  4. public class DateDemo04{  
  5.     public static void main(String args[]){  
  6.         DateFormat df1 = null ;     // 聲明一個DateFormat  
  7.         DateFormat df2 = null ;     // 聲明一個DateFormat  
  8.         df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN")) ; // 獲得日期的DateFormat對象  
  9.         df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN")) ;    // 獲得日期時間的DateFormat對象  
  10.         System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化  
  11.         System.out.println("DATETIME:" + df2.format(new Date())) ;   // 按照日期時間格式化  
  12.   
  13.     }  
  14. };  
2.SimpleDateFormat類

此類的功能是完成日期的顯示格式化的,例如,在開發中,能夠會將一種日期格式變爲另一種日期格式,以下所示:blog

原始日期:2008-10-19   10:11:30.345

轉換捕日期:2008 年 10 月 19 日    10 點 11 分 30 秒 345 毫秒

可是以上的兩個日期中日期的數字是徹底同樣的,惟一不一樣的是日期的顯示格式不一樣,因此要想實現這樣的轉換功能就必須依靠SimpleDateFormat類。

若是要想實現轉換,則必須首先準備好一個模板,經過此模板進行日期數字的提取工做。

在SimpleDateFormat類使用的時候,必須注意的是在構造對象時要傳入匹配的模板

構造方法:public SimpleDateFormat(String pattern)

轉換:public Date parse(String source)throws ParseException -->此時取得的是所有時間數。

格式化:public final String Format(Date date)      -->將時間從新格式化成字符串顯示。

[java]  view plain copy
  1. import java.text.* ;  
  2. import java.util.* ;  
  3. public class DateDemo05{  
  4.     public static void main(String args[]){  
  5.         String strDate = "2008-10-19 10:11:30.345" ;  
  6.         // 準備第一個模板,從字符串中提取出日期數字  
  7.         String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ;  
  8.         // 準備第二個模板,將提取後的日期數字變爲指定的格式  
  9.         String pat2 = "yyyy年MM月dd日 HH時mm分ss秒SSS毫秒" ;  
  10.         SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ;        // 實例化模板對象  
  11.         SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ;        // 實例化模板對象  
  12.         Date d = null ;  
  13.         try{  
  14.             d = sdf1.parse(strDate) ;   // 將給定的字符串中的日期提取出來  
  15.         }catch(Exception e){            // 若是提供的字符串格式有錯誤,則進行異常處理  
  16.             e.printStackTrace() ;       // 打印異常信息  
  17.         }  
  18.         System.out.println(sdf2.format(d)) ;    // 將日期變爲新的格式  
  19.     }  
  20. };  

總結:

1.DateFormat 能夠直接使用,但其自己是一個抽象類,能夠根據Locate指定的區域不一樣獲得不一樣的日期時間顯示效果

2.SimpleDateFormat 類是DateFormat 類的子類,通常狀況下來說 DateFormat 類不多會直接使用。而都使用SimpleDateFormat 類完成。

 

------------------------------------------------------------------------------------------------------------------------------------

SimpleDateFormat函數的繼承關係:
java.lang.Object
    |
    +----java.text.Format
            |
            +----java.text.DateFormat
                    |
                    +----java.text.SimpleDateFormat

下面是個小例子:
import java.text.*;
import java.util.Date;

/**
   SimpleDateFormat函數語法:
  
   G 年代標誌符
   y 年
   M 月
   d 日
   h 時 在上午或下午 (1~12)
   H 時 在一天中 (0~23)
   m 分
   s 秒
   S 毫秒
   E 星期
   D 一年中的第幾天
   F 一月中第幾個星期幾
   w 一年中第幾個星期
   W 一月中第幾個星期
   a 上午 / 下午 標記符 
   k 時 在一天中 (1~24)
   K 時 在上午或下午 (0~11)
   z 時區
*/
public class FormatDateTime {

     public static void main(String[] args) {
         SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
         SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); 
         SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等價於now.toLocaleString()
         SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒 E ");
         SimpleDateFormat myFmt4=new SimpleDateFormat(
                 "一年中的第 D 天 一年中第w個星期 一月中第W個星期 在一天中k時 z時區");
         Date now=new Date();
         System.out.println(myFmt.format(now));
         System.out.println(myFmt1.format(now));
         System.out.println(myFmt2.format(now));
         System.out.println(myFmt3.format(now));
         System.out.println(myFmt4.format(now));
         System.out.println(now.toGMTString());
         System.out.println(now.toLocaleString());
         System.out.println(now.toString());
     }    
    
}

效果:
2004年12月16日 17時24分27秒
04/12/16 17:24
2004-12-16 17:24:27
2004年12月16日 17時24分27秒 星期四 
一年中的第 351 天 一年中第51個星期 一月中第3個星期 在一天中17時 CST時區
16 Dec 2004 09:24:27 GMT
2004-12-16 17:24:27
Thu Dec 16 17:24:27 CST 2004

下面是個JavaBean:
public class FormatDateTime {
    
     public static String toLongDateString(Date dt){
         SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒 E ");        
         return myFmt.format(dt);
     }
    
     public static String toShortDateString(Date dt){
         SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH時mm分");        
         return myFmt.format(dt);
     }    
    
     public static String toLongTimeString(Date dt){
         SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS");        
         return myFmt.format(dt);
     }
     public static String toShortTimeString(Date dt){
         SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm");        
         return myFmt.format(dt);
     }
    
     public static void main(String[] args) {

         Date now=new Date();

         System.out.println(FormatDateTime.toLongDateString(now));
         System.out.println(FormatDateTime.toShortDateString(now));
         System.out.println(FormatDateTime.toLongTimeString(now));
         System.out.println(FormatDateTime.toShortTimeString(now));
     }    
    
}
調用的main 測試結果:
2004年12月16日 17時38分26秒 星期四 
04年12月16日 17時38分
17 38 26 0965
04/12/16 17:38

 

 


在java中取得當前的系統時間而且轉化成本身想要的格式

     須要引進 java.util.Calendar 和 java.text.SimpleDateFormat 這兩個類:         Calendar rightNow = Calendar.getInstance();          SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddhhmmss");          String sysDatetime = fmt.format(rightNow.getTime());        能夠對 new SimpleDateFormat("yyyyMMddhhmmss") 中引號裏面的格式進行編輯,轉換成本身相要的格式,好比還能夠轉     換成    new    SimpleDateFormat("yyyy/MM/dd    hh:mm:ss    ") 的格式

相關文章
相關標籤/搜索