2017-04-05 31 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时,你需要有一个明确定义的格式。