6、日期格式化(DateFormat类和SimpleDateFormat类)
格式化日期表示將日期/時間格式轉換為預先定義的日期/時間格式。例如將日期“Fri May 18 15:46:24 CST2016” 格式轉換為 “2016-5-18 15:46:24 星期五”的格式。
在 Java 中,可以使用 DateFormat 類和 SimpleDateFormat 類來格式化日期,下面詳細介紹這兩個格式化日期類的使用。
DateFormat 類
DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化并解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進行格式化(也就是日期→文本)、解析(文本→日期)和標準化日期。
在創建 DateFormat 對象時不能使用 new 關鍵字,而應該使用 DateFormat 類中的靜態方法 getDateInstance(),示例代碼如下:
DateFormat df = DateFormat.getDatelnstance();在創建了一個 DateFormat 對象后,可以調用該對象中的方法來對日期/時間進行格式化。DateFormat 類中常用方法如表 1 所示。
| String format(Date date) | 將 Date 格式化日期/時間字符串 |
| Calendar getCalendar() | 獲取與此日期/時間格式相關聯的日歷 |
| static DateFormat getDateInstance() | 獲取具有默認格式化風格和默認語言環境的日期格式 |
| static DateFormat getDateInstance(int style) | 獲取具有指定格式化風格和默認語言環境的日期格式 |
| static DateFormat getDateInstance(int style,Locale locale) | 獲取具有指定格式化風格和指定語言環境的日期格式 |
| static DateFormat getDateTimeInstance() | 獲取具有默認格式化風格和默認語言環境的日期/時間格式 |
| static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) | 獲取具有指定日期/時間格式化風格和默認語言環境的日期/時間格式 |
| static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale) | 獲取具有指定日期/時間格式化風格和指定語言環境的日期/時間格式 |
| static DateFormat getTimeInstance() | 獲取具有默認格式化風格和默認語言環境的時間格式 |
| static DateFormat getTimeInstance(int style) | 獲取具有指定格式化風格和默認語言環境的時間格式 |
| static DateFormat getTimeInstance(int style,Locale locale) | 獲取具有指定格式化風格和指定語言環境的時間格式 |
| void setCalendar(Calendar newCalendar) | 為此格式設置日歷 |
| Date parse(String source) | 將給定的字符串解析成日期/時間 |
格式化樣式主要通過 DateFormat 常量設置。將不同的常量傳入到表 1 所示的方法中,以控制結果的長度。DateFormat 類的常量如下。
- SHORT:完全為數字,如 12.5.10 或 5:30pm。
- MEDIUM:較長,如 May 10,2016。
- LONG:更長,如 May 12,2016 或 11:15:32am。
- FULL:是完全指定,如 Tuesday、May 10、2012 AD 或 11:l5:42am CST。
使用 DateFormat 類格式化曰期/時間的示例如下:
// 獲取不同格式化風格和中國環境的日期 DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA); DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA); DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA); DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); // 獲取不同格式化風格和中國環境的時間 DateFormat df5 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA); DateFormat df6 = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA); DateFormat df7 = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA); DateFormat df8 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA); // 將不同格式化風格的日期格式化為日期字符串 String date1 = df1.format(new Date()); String date2 = df2.format(new Date()); String date3 = df3.format(new Date()); String date4 = df4.format(new Date()); // 將不同格式化風格的時間格式化為時間字符串 String time1 = df5.format(new Date()); String time2 = df6.format(new Date()); String time3 = df7.format(new Date()); String time4 = df8.format(new Date()); // 輸出日期 System.out.println("SHORT:" + date1 + " " + time1); System.out.println("FULL:" + date2 + " " + time2); System.out.println("MEDIUM:" + date3 + " " + time3); System.out.println("LONG:" + date4 + " " + time4);運行該段代碼,輸出的結果如下:
SHORT:18-10-15 上午9:30 FULL:2018年10月15日 星期一 上午09時30分43秒 CST MEDIUM:2018-10-15 9:30:43 LONG:2018年10月15日 上午09時30分43秒該示例主要介紹了 DateFormat 類中方法與常量的結合使用,通過使用 DateFomat 類可以對日期進行不同風格的格式化。
SimpleDateFormat 類
如果使用 DateFormat 類格式化日期/時間并不能滿足要求,那么就需要使用 DateFormat 類的子類——SimpleDateFormat。
SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類,它允許進行格式化(日期→文本)、解析(文本→日期)和規范化。SimpleDateFormat 使得可以選擇任何用戶定義的日期/時間格式的模式。
SimpleDateFormat 類主要有如下 3 種構造方法。
SimpleDateF ormat。
SimpleDateFormat 自定義格式中常用的字母及含義如表 2 所示。
例 1
編寫 Java 程序,使用 SimpleDateFormat 類格式化當前日期并打印,日期格式為“xxxx 年 xx 月 xx 日星期 xxx 點 xx 分 xx 秒”,具體的實現代碼如下:
該程序的運行結果如下:
今天是 2018 年 10 月 15 日 星期一 09 點 26 分 23 秒總結
以上是生活随笔為你收集整理的6、日期格式化(DateFormat类和SimpleDateFormat类)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5、时间日期的处理:Java Date类
- 下一篇: 7、实例:计算课程结束的日期