SimpleDateFormat 是一個以國別敏感的方式格式化和分析數據的具體類。 它容許格式化 (date -> text)、語法分析 (text -> date)和標準化。 java
SimpleDateFormat 容許覺得日期-時間格式化選擇任何用戶指定的方式啓動。 可是,但願用 DateFormat 中的getTimeInstance、 getDateInstance 或 getDateTimeInstance 建立一個日期-時間格式化程序。 每一個類方法返回一個以缺省格式化方式初始化的日期/時間格式化程序。 能夠根據須要用 applyPattern 方法修改格式化方式。
SimpleDateFormat函數的繼承關係:
java.lang.Object
|
+----java.text.Format
|
+----java.text.DateFormat
|
+----java.text.SimpleDateFormat
下面是個小例子:
import java.text.*;
import java.util.Date; app
/**
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(); spa
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 orm
在項目開發中,會常常將一個日期格式轉換爲另一種日期格式,例如,原日期爲2008-10-19 10:11:30.345,轉換後日期爲2008年10月19日10時11分30秒345毫秒。從這兩個日期能夠發現,日期的數字徹底同樣,只是日期格式有所不一樣,要想實現轉換就必須使用java.text包中的SimpleDateFormat類完成。 對象
首先必須先定義出一個完整的日期轉化模板,在模板中經過特定的日期標記能夠將一個日期格式中的日期數字提取出來,日期格式化模板標記如表11-9所示。 繼承
表11-9 日期格式化模板標記 ci
序 號 開發 |
標 記 |
描 述 |
1 |
y |
年,年份是4位數字, 因此須要使用yyyy表示 |
2 |
M |
年中的月份,月份是兩位數字, 因此須要使用MM表示 |
3 |
d |
月中的天數,天數是兩位數字, 因此須要使用dd表示 |
4 |
H |
一天中的小時數(24小時), 小時是兩位數字,使用HH表示 |
續表
序 號 |
標 記 |
描 述 |
5 |
m |
小時中的分鐘數, 分鐘是兩位數字,使用mm表示 |
6 |
s |
分鐘中的秒數, 秒是兩位數字,使用ss表示 |
7 |
S |
毫秒數,毫秒數是3 位數字,使用SSS表示 |
此外,還須要SimpleDateFormat類中的方法才能夠完成,SimpleDateFormat類的經常使用方法如表11-10所示。
表11-10 SimpleDateFormat類中的經常使用方法
序 號 |
方 法 |
類 型 |
描 述 |
1 |
public SimpleDateFormat(String pattern) |
構造 |
經過一個指定的模板構造對象 |
2 |
public Date parse(String source) throws ParseException |
普通 |
將一個包含日期的 字符串變爲Date類型 |
3 |
public final String format(Date date) |
普通 |
將一個Date類型按照指定 格式變爲String類型 |