DateFormate Pattern 格式填坑

此博客作爲使用Date Formate時,對於Pattern的格式填坑。僅做參考

String轉Date或者Date轉String的時候都會使用到"yyyyMMdd HH:mm:ss"類似的模板。

先介紹一下 G 年代標誌符

   y 年 
   M 月 
   d 日 
   h 時  在上午或下午 (1~12) 
   H 時 在一天中 (0~23) 
   m 分 
   s  秒 
   S 毫秒 
   E 星期 
   D 一年中的第幾天 
   F 一月中第幾個星期幾 
   w 一年中第幾個星期 
   W 一月中第幾個星期 
   a 上午 / 下午 標記符 
   k 時 在一天中 (1~24) 
   K 時 在上午或下午 (0~11) 
   z 時區 

進行Date、String 相互轉換時,Pattern是不能亂用,應該參考G年代標誌符,否則會出現意想不到的錯誤輸出,或者程序出現異常,下面介紹幾個例子說明:

private final SimpleDateFormat format = new SimpleDateFormate();

範例1:

Date now = new Date();
String pattern = "yyyyMMdd HH:mm:ss";
format.applyPattern(pattern);
String nowStr = format.format(now);
system.out.println(nowStr);

輸出

20190625 13:00:00 

是一個正確的字符串輸出。

 

範例2

如果將 pattern 改爲 "YYYYMMDD HH:MM:SS",輸出又是怎樣?

// String pattern = "yyyyMMdd HH:mm:ss";
   String pattern = "YYYYMMDD HH:MM:SS";

輸出

正如你所料:程序出現異常

Exception in thread "main" java.lang.IllegalArgumentException: Illegal pattern character 'Y'

參考G 年代標誌符,沒有Y這樣的說明。

 

範例3

如果將 pattern 改爲 "yyyyMMDD HH:MM:SS",輸出又是怎樣?

// String pattern = "yyyyMMdd HH:mm:ss";
   String pattern = "yyyyMMDD HH:MM:SS";

輸出:

20190125 13:01:00

是一個不正確的輸出。

 

範例4

如果將 pattern 改爲 "yyyyMMdd hh:mm:ss",輸出又是怎樣? 

// String pattern = "yyyyMMdd HH:mm:ss";
   String pattern = "yyyyMMdd hh:mm:ss";

輸出:

20190625 01:00:00 

這裏出現的時間是12小時制的,不能說不正確,需要根據需求來定義是否正確。

 

總結:格式化日期輸出或者字符串格式化爲指定的日期時,應該選擇正確的格式化的模板,否則會出現意想不到的輸出或者程序出現錯誤。在程序出現錯誤時,能最明顯的觀察到格式化日期出了問題。但如果是出現了意想不到的日期時間輸出,卻沒有發現,就會造成程序的隱藏八阿哥。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章