【发布时间】:2017-04-05 21:32:19
【问题描述】:
在 Java 中,我们可以使用 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!!
有没有一种简单的方法可以通过混合正则表达式将此功能扩展到所有数字集?换句话说,只要格式匹配,我不在乎分隔符是什么。例如:
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
【问题讨论】:
-
我不能更强烈地建议不要使用旧的
java.util.Date类。您应该在java.time包中找到适合您用例的类。 -
您不能直接这样做,但也许您想创建自己的类来扩展 SimpleDateFormat 的抽象父类:DateFormat。
-
你为什么不试试... str.replaceAll("-","//"); ?
标签: java regex simpledateformat