SimpleDateFormat這個類別來解決我們的時間格式問題。
SimpleDateFormat 是一個以與語言環境相關的方式來格式化和分析日期的具體類別。它允許進行格式化(日期-> 文字)、分析(文字-> 日期)和標準化。 SimpleDateFormat 使得可以選擇任何使用者定義的日期-時間格式的模式.
日期和時間模式日期和時間格式由日期和時間模式字串指定。在日期和時間模式字串中,未加引號的字母'A' 到'Z' 和'a' 到'z' 被解釋為模式字母,用來表示日期或時間字串元素。文字可以使用單引號(') 引起來,以免進行解釋。 "''" 表示單引號。所有其他字元均不解釋;只是在格式化時將它們簡單複製到輸出字串,或在分析時與輸入字串進行匹配。
定義了以下模式字母(所有其他字元'A' 到'Z' 和'a' 到'z' 都被保留):
字母 日期或時間元素 表示 範例
G Era 標誌符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周數 Number 27
W 月份的週數 Number 2
D 年中的天數 Number 189
d 月份的天數 Number 10
F 月中的星期 Number 2
E 星期中的天數 Text Tuesday; Tue
a Am/pm 標記 Text PM
H 一天中的小時數(0-23) Number 0
k 一天中的小時數(1-24) Number 24
K am/pm 中的小時數(0-11) Number 0
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
S 毫秒數 Number 978
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800
以下範例顯示如何在美國語言環境中解釋日期和時間模式。給定的日期和時間為美國太平洋時區的本地時間2001-07-04 12:08:56
日期和時間模式 結果
"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 在程式設計中的實際應用實例:
(一)格式化(日期-> 文字)
一般地,中文常用的 日期時間如: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 )及其相近的形式,就有點小技巧 19JUL07
SimpleDateFormat formater = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("Date to String "+formater.format(new Date()).toUpperCase());
由於是英文的所以應該使用Locale 物件參數,否則就使用的是預設本地Locale 。
(二)分析(文-> 日期)
一般地,想要什麼要的格式的時間就使用什麼形式的日期時間模式和文字參數,例如2007-7-19 則傳回一個java.util.Date型的時間對象,時分秒都補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();
}
它也傳回一個java.util.Date型的日期對象,時分秒都補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