C語言中文網 目錄

Java日期格式化(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 所示。

表1 DateFormat類的常用方法
方法 描述
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 種構造方法。
  • SimpleDateFormat():用默認的格式和默認的語言環境構造 SimpleDateFormat。
  • SimpleDateFormat(String pattern):用指定的格式和默認的語言環境構造 SimpleDateF ormat。
  • SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的語言環境構造 SimpleDateF ormat。

SimpleDateFormat 自定義格式中常用的字母及含義如表 2 所示。

表2 日期/時間格式中的字母及其含義與示例
字母 含義 示例
y 年份。一般用 yy 表示兩位年份,yyyy 表示 4 位年份 使用 yy 表示的年扮,如 11;
使用 yyyy 表示的年份,如 2011
M 月份。一般用 MM 表示月份,如果使用 MMM,則會
根據語言環境顯示不同語言的月份
使用 MM 表示的月份,如 05;
使用 MMM 表示月份,在 Locale.CHINA
語言環境下,如“十月”;在 Locale.US
語言環境下,如 Oct
d 月份中的天數。一般用 dd 表示天數 使用 dd 表示的天數,如 10
D 年份中的天數。表示當天是當年的第幾天, 用 D 表示 使用 D 表示的年份中的天數,如 295
E 星期幾。用 E 表示,會根據語言環境的不同, 顯示不
同語言的星期幾
使用 E 表示星期幾,在 Locale.CHINA 語
言環境下,如“星期四”;在 Locale.US 語
言環境下,如 Thu
H 一天中的小時數(0~23)。一般用 HH 表示小時數 使用 HH 表示的小時數,如 18
h 一天中的小時數(1~12)。一般使用hh表 示小時數 使用 hh 表示的小時數,如 10 (注意 10 有
可能是 10 點,也可能是 22 點)
m 分鐘數。一般使用 mm 表示分鐘數 使用 mm 表示的分鐘數,如 29
s 秒數。一般使用 ss 表示秒數 使用 ss 表示的秒數,如 38
S 毫秒數。一般使用 SSS 表示毫秒數 使用 SSS 表示的毫秒數,如 156

例 1

編寫 Java 程序,使用 SimpleDateFormat 類格式化當前日期并打印,日期格式為“xxxx 年 xx 月 xx 日星期 xxx 點 xx 分 xx 秒”,具體的實現代碼如下:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test13
{
    public static void main(String[] args)
    {
        Date now=new Date();    //創建一個Date對象,獲取當前時間
        //指定格式化格式
        SimpleDateFormat f=new SimpleDateFormat("今天是 "+"yyyy 年 MM 月 dd 日 E HH 點 mm 分 ss 秒");
        System.out.pnntln(f.format(now));    //將當前時間袼式化為指定的格式
    }
}

該程序的運行結果如下:
今天是 2018 年 10 月 15 日 星期一 09 點 26 分 23 秒

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户