一、DateFormat
java.text.DateFormat
使用 getDateInstance 來獲取該國家/地區的標准日期格式。另外還提供了一些其他靜態工廠方法。使用 getTimeInstance 可獲取該國家/地區的時間格式。使用 getDateTimeInstance 可獲取日期和時間格式。可以將不同選項傳入這些工廠方法,以控制結果的長度(從 SHORT 到 MEDIUM 到 LONG 再到 FULL)。確切的結果取決於語言環境,但是通常:
- SHORT 完全為數字,如 12.13.52 或 3:30pm
- MEDIUM 較長,如 Jan 12, 1952
- LONG 更長,如 January 12, 1952 或 3:30:32pm
- FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST。
如果願意,還可以在格式上設置時區。如果想對格式化或解析施加更多的控制(或者給予用戶更多的控制),可以嘗試將從工廠方法所獲取的 DateFormat 強制轉換為 SimpleDateFormat。這適用於大多數國家/地區;只是要記住將其放入一個 try 代碼塊中,以防遇到特殊的格式。
使用當地時區
Date date = new Date(); //日期格式,精確到日 2017-4-16 DateFormat df1 = DateFormat.getDateInstance(); System.out.println(df1.format(date)); //可以精確到秒 2017-4-16 12:43:37 DateFormat df2 = DateFormat.getDateTimeInstance(); System.out.println(df2.format(date)); //只顯示出時時分秒 12:43:37 DateFormat df3 = DateFormat.getTimeInstance(); System.out.println(df3.format(date)); //顯示日期,周,上下午,時間(精確到秒) //2017年4月16日 星期日 下午12時43分37秒 CST DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); System.out.println(df4.format(date)); //顯示日期,上下午,時間(精確到秒) //2017年4月16日 下午12時43分37秒 DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); System.out.println(df5.format(date)); //顯示日期,上下午,時間(精確到秒) //2017年4月16日 下午12時43分37秒 DateFormat df5_1 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.CHINA); System.out.println(df5_1.format(date)); //顯示日期,上下午,時間(精確到分) 17-4-16 下午12:43 DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); System.out.println(df6.format(date)); //顯示日期,時間(精確到秒) 2017-4-16 12:43:37 DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); System.out.println(df7.format(date));
二、 SimpleDateFormat
java.text.SimpleDateFormat
定義了以下模式字母(所有其他字符 '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 |
實例參數
日期和時間模式 | 結果 |
---|---|
"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 |
代碼結果
Date d = new Date(); /* h 1-12輸出格式: 2017-04-16 01:01:22 */ DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String s = format1.format(d); System.out.println(s); /* H 0-23輸出格式:2017-04-16 13:01:22*/ DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); s = format2.format(d); System.out.println(s); /* K 0-11輸出格式:2017-04-16 01:01:22 */ DateFormat format3 = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss"); s = format3.format(d); System.out.println(s); /* k 1-24輸出格式: 2017-04-16 13:01:22 */ DateFormat format4 = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); s = format4.format(d); System.out.println(s); /* 輸出格式: 20170416010122 */ DateFormat format5 = new SimpleDateFormat("yyyyMMddhhmmss"); s = format5.format(d); System.out.println(s);
常用方法
parse
public Date parse(String texts)
-
解析字符串的文本,生成
Date
。此方法試圖解析文本。如果解析成功,並返回解析得到的日期。更新后的
pos
可以用來指示下次調用此方法的起始點。如果發生錯誤,並且返回 null。 -
- 指定者:
-
類
DateFormat
中的parse
-
- 參數:
-
text
- 應該解析其中一部分的String
。 -
- 返回:
-
從字符串進行解析的
Date
。如果發生錯誤,則返回 null。 - 拋出:
-
NullPointerException
- 如果text
為 null。 - 另請參見:
-
DateFormat.setLenient(boolean)
parse
public Date parse(String text, ParsePosition pos)
-
解析字符串的文本,生成
Date
。此方法試圖解析從
pos
給定的索引處開始的文本。如果解析成功,則將pos
的索引更新為所用最后一個字符后面的索引(不必對直到字符串結尾的所有字符進行解析),並返回解析得到的日期。更新后的pos
可以用來指示下次調用此方法的起始點。如果發生錯誤,則不更改pos
的索引,並將pos
的錯誤索引設置為發生錯誤處的字符索引,並且返回 null。 -
- 指定者:
-
類
DateFormat
中的parse
-
- 參數:
-
text
- 應該解析其中一部分的String
。 -
pos
- 具有以上所述的索引和錯誤索引信息的ParsePosition
對象。 - 返回:
-
從字符串進行解析的
Date
。如果發生錯誤,則返回 null。 - 拋出:
-
NullPointerException
- 如果text
或pos
為 null。 - 另請參見:
-
DateFormat.setLenient(boolean)
format
public final String format(Date date)
-
將一個 Date 格式化為日期/時間字符串。
-
- 參數:
-
date
- 要格式化為時間字符串的時間值。 - 返回:
- 已格式化的時間字符串。
天津雍博科技有限責任公司
歡迎大家訪問www.yongbosoft.com ,崇尚技術,為您提供完美產品,優質服務!