天天看點

日期操作類(DateFormat與SimpleDateFormat)的差別和使用詳解一、DateFormat類1.2、日期格式二、SimpleDateFormat類2.2、SimpleDateFormat類使用DateFormat 和SimpleDateFormat 的差別

轉載請标明出處:http://blog.csdn.net/xx326664162/article/details/52208247 文章出自:薛瑄的部落格

你也可以檢視我的其他同類文章,也會讓你有一定的收貨

一、DateFormat類

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

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

1.1、執行個體化DateFormat

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

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

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

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

1.2、日期格式

美式日期格式

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 毫秒
           

2.1、日期模闆

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

日期操作類(DateFormat與SimpleDateFormat)的差別和使用詳解一、DateFormat類1.2、日期格式二、SimpleDateFormat類2.2、SimpleDateFormat類使用DateFormat 和SimpleDateFormat 的差別

2.2、SimpleDateFormat類使用

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

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

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

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

2.3、示例

把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 類完成。

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

參考:

日期操作類(DateFormat與SimpleDateFormat)的差別和執行個體

SimpleDateFormat使用詳解

關注我的公衆号,輕松了解和學習更多技術
日期操作類(DateFormat與SimpleDateFormat)的差別和使用詳解一、DateFormat類1.2、日期格式二、SimpleDateFormat類2.2、SimpleDateFormat類使用DateFormat 和SimpleDateFormat 的差別