SimpleDateFormat 是一個(gè)以與語言環(huán)境相關(guān)的方式來格式化和分析日期的具體類。它允許進(jìn)行格式化(日期 -> 文本)、分析(文本 -> 日期)和規(guī)范化。SimpleDateFormat 使得可以選擇任何用戶定義的日期-時(shí)間格式的模式.
日期和時(shí)間模式
日期和時(shí)間格式由日期和時(shí)間模式 字符串指定。在日期和時(shí)間模式字符串中,未加引號(hào)的字母 'A' 到 'Z' 和 'a' 到 'z' 被解釋為模式字母,用來表示日期或時(shí)間字符串元素。文本可以使用單引號(hào) (') 引起來,以免進(jìn)行解釋。"''" 表示單引號(hào)。所有其他字符均不解釋;只是在格式化時(shí)將它們簡(jiǎn)單復(fù)制到輸出字符串,或者在分析時(shí)與輸入字符串進(jìn)行匹配。
定義了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):
字母 日期或時(shí)間元素 表示 示例
G Era 標(biāo)志符TextAD
y年Year1996; 96
M年中的月份MonthJuly; Jul; 07
w年中的周數(shù)Number27
W月份中的周數(shù)Number2
D年中的天數(shù)Number189
d月份中的天數(shù)Number10
F月份中的星期Number2
E星期中的天數(shù)TextTuesday; Tue
aAm/pm 標(biāo)記TextPM
H一天中的小時(shí)數(shù)(0-23)Number0
k一天中的小時(shí)數(shù)(1-24)Number24
K am/pm 中的小時(shí)數(shù)(0- 11)Number0
ham/pm 中的小時(shí)數(shù)(1-12)Number12
m小時(shí)中的分鐘數(shù)Number30
s分鐘中的秒數(shù)Number55
S毫秒數(shù)Number978
z時(shí)區(qū)General time zonePacific Standard Time; PST; GMT-08:00
Z時(shí)區(qū)RFC 822 time zone-0800
以下示例顯示了如何在美國(guó)語言環(huán)境中解釋日期和時(shí)間模式。給定的日期和時(shí)間為美國(guó)太平洋時(shí)區(qū)的本地時(shí)間 2001-07-04 12:08:56
日期和時(shí)間模式結(jié)果
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
SimpleDateFormat 在編程中的實(shí)際應(yīng)用實(shí)例:
(一)格式化(日期 -> 文本)
一般地,中文中常用的 日期 時(shí)間如:20070719 20:29:30
SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
System.out.println("Date to String "+formater.format(new Date()));
相近的常用形式還有 yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss
但是值得注意是:這種格式(19JUL07 )及其相近的形式,就有點(diǎn)小技巧 19JUL07
SimpleDateFormat formater = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("Date to String "+formater.format(new Date()).toUpperCase());
由于是英文的所以應(yīng)該使用 Locale 對(duì)象參數(shù),否則就使用的是默認(rèn)本地 Locale 。
(二)分析(文本 -> 日期)
一般地,想要什么要的格式的時(shí)間就就使用什么形式的日期時(shí)間模式和文本參數(shù),例如 2007-7-19 則返回一個(gè)java.util.Date型的時(shí)間對(duì)象,時(shí)分秒都補(bǔ)0
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
try {
System.out.println("String to Date "+formater.parse("2007sep01"));
} catch (ParseException e) {
e.printStackTrace();
}
特別地,
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
try {
System.out.println("String to Date "+formater.parse("2007sep01"));
} catch (ParseException e) {
e.printStackTrace();
}
它也返回一個(gè)java.util.Date型的日期對(duì)象,時(shí)分秒都補(bǔ)0
(三)文本 - > Timestamp 、日期 -> Timestamp
Timestamp t ;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
t = new Timestamp(format.parse("2007-07-19 00:00:00").getTime());
} catch (ParseException e) {
e.printStackTrace();
}
Timestamp t ;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
t = new Timestamp(new Date().getTime());