DateFormat與SimpleDateFormat區別和使用詳解


DateFormat類

此類是一個日期的格式化類,用來格式化日期。具體日期可以通過java.util.Date類來獲取。

DateFormat類的定義:此類是定義在java.test包中的。

public abstract class DateFormat extends Format

實例化DateFormat

DateFormat是一個抽象類,按照以住的思路,直接使用其子類實例化即可。但是DateFormat 類本身的內部提供了可以直接為其實例化的操作。

//得到日期的DateFormat對象:
public static final DateFormat getDateInstance();

//得到日期時間的DateFormat對象:
public static final DateFormat getDateTimeInstance();

//使用DateFormat類格式化Date類日期
public final String format(Date date)

日期格式

美式日期格式

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對象指定要顯示的區域,指定的區域是中國

import java.text.DateFormat ;  
import java.util.Date ;  
import java.util.Locale ;  
public class DateDemo04{  
    public static void main(String args[]){  
        DateFormat df1 = null ;     // 聲明一個DateFormat  
        DateFormat df2 = null ;     // 聲明一個DateFormat  
        df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN")) ; // 得到日期的DateFormat對象  
        df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN")) ;    // 得到日期時間的DateFormat對象  
        System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化  
        System.out.println("DATETIME:" + df2.format(new Date())) ;   // 按照日期時間格式化  

    }  
}; 

SimpleDateFormat類

SimpleDateFormat函數的繼承關系: 
java.lang.Object 

+—-java.text.Format 
   | 
   +—-java.text.DateFormat 
      | 
      +—-java.text.SimpleDateFormat

將一種日期格式變為另外一種日期格式

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

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

日期模板

首先准備好一個日期格式模板,根據模板的格式來轉化日期。

這里寫圖片描述

SimpleDateFormat類使用

在構造對象時要傳入日期格式模板

//構造方法:
public SimpleDateFormat(String pattern)

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

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

示例 

示例一

把Date轉化成指定的日期格式

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

 

示例二

把給定的字符串中的日期提取為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)) ;    // 將日期變為新的格式  
    }  
};  

 

DateFormat 和SimpleDateFormat 的區別

1.DateFormat 可以直接使用,但其本身是一個抽象類,可以根據Locate指定的區域得到對應的日期時間格式

2.SimpleDateFormat 類是DateFormat 類的子類,一般情況下來講 DateFormat 類很少會直接使用。而都使用SimpleDateFormat 類完成。

1、DateFormat:是抽象類,所以使用子類SimpleDateFormat
 
2、SimpleDateFormat類構造方法:
    public SimpleDateFormat():使用默認模式。
    public SimpleDateFormat(String pattern):使用給定的模式。
        API規定的模式:
            y M d H m s
    
3、SimpleDateFormat類成員方法:
    public final String format(Date date):日期格式化為日期字符串。
    pattern Date parse(String source):日期字符串解析為日期。

 

更深入了解,可參考這篇文章深入理解Java:SimpleDateFormat安全的時間格式化

參考: 
日期操作類(DateFormat與SimpleDateFormat)的區別和實例

SimpleDateFormat使用詳解

 

轉載出處:http://blog.csdn.net/xx326664162/article/details/52208247 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM