轉載請标明出處: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、日期模闆
首先準備好一個日期格式模闆,根據模闆的格式來轉化日期。
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使用詳解
關注我的公衆号,輕松了解和學習更多技術