2017-04-05 72 views
-1

在Java中,我們可以使用SimpleDateFormat的解析像下面的日期來解析與SimpleDateFormat的日期:如何使用正則表達式

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
Date d = sdf.parse("12/21/2012"); //matched to December 21, 2012 

但如果我們的日期更改爲

Date d = sdf.parse("12-21-2012"); //ParseException!! 

有一種簡單的方法來通過混合正則表達式將這個功能擴展到所有數字集合?換句話說,只要格式匹配,我不在乎分隔符是什麼。 E.G:

SimpleDateFormat sdf = new SimpleDateFormat("MM[^0-9]dd[^0-9]yyyy"); 
Date d = sdf.parse("12/21/2012"); //matched to December 21, 2012 
Date d = sdf.parse("12-21-2012"); //matched to December 21, 2012 
+1

我不能更強烈地建議不要使用傳統的'java.util.Date'類。你應該在'java.time'包中爲你的用例找到合適的類。 –

+0

你不能直接這樣做,但也許你想創建自己的類來擴展SimpleDateFormat的抽象父類:DateFormat。 –

+3

[如何使用SimpleDateFormat解析多種格式的日期](http://stackoverflow.com/questions/4024544/how-to-parse-dates-in-multiple-formats-using-simpledateformat) – Pshemo

回答

0

您不能使用java.text.SimpleDateFormat與通用格式。當你想分析或格式化一個java.util.Date時,你需要有一個明確定義的格式。