1. 為什么要使用SimpleDateFormat?
在Java中,如果我們想獲取當前時間,一般會使用Date類的無參構造函數,如下所示,我們獲取到當前時間並輸出:
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
Date currentTime = new Date();
System.out.println(currentTime);
}
}
輸出結果:
Mon Feb 18 10:24:30 CST 2019
此時我們會發現, 輸出的格式並不是我們預期的格式,一般情況下,我們希望的格式都是類似於2019-02-18,2019/02/18,2019-02-18 10:24:30這樣的,此時我們就需要用到java.text.SimpleDateFormat
來自定義格式。
2. 使用format()方法將Date轉換為String
使用format()
方法,我們可以將日期類型轉換為自己自定義的字符串格式,如2019-02-18,2019/02/18,2019-02-18 10:24:30等,自定義格式如下表所示:
格式 | 釋義 | 舉例 |
---|---|---|
yyyy | 年 | 2019 |
MM | 月 | 02 |
dd | 日 | 18 |
HH | 小時(24小時制) | 13,下午一點 |
mm | 分鍾 | 53 |
ss | 秒 | 42 |
SSS | 毫秒 | 629 |
package com.zwwhnly.springbootaction.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
Date currentTime = new Date();
System.out.println(currentTime);
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(simpleDateFormat1.format(currentTime));
System.out.println(simpleDateFormat2.format(currentTime));
System.out.println(simpleDateFormat3.format(currentTime));
}
}
輸出結果:
Mon Feb 18 13:53:50 CST 2019
2019-02-18 13:53:50.629
2019-02-18
2019/02/18
3. 使用parse()方法將String轉換為Date
在實際開發過程中,我們有時需要將String轉換為Date類型,以進行后續操作,此時可以使用parse()
方法。
但需要注意:如果字符串與指定的格式不匹配,會報java.text.ParseException
異常。
package com.zwwhnly.springbootaction.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) {
try {
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String strDate1 = "2019-02-18 13:58";
String strDate2 = "2019-02-18";
Date date1 = simpleDateFormat1.parse(strDate1);
System.out.println(date1);
Date date2 = simpleDateFormat1.parse(strDate2);
System.out.println(date2);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
運行結果如下圖所示:
由此我們可以看到,strDate1格式匹配能正常轉換為Date類型,而strDate2由於格式不匹配,
拋出java.text.ParseException
。