【问题标题】:How to parse dates with SimpleDateFormat using Regex [duplicate]如何使用正则表达式解析带有 SimpleDateFormat 的日期 [重复]
【发布时间】: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


【解决方案1】:

您不能将 java.text.SimpleDateFormat 与通用格式一起使用。当您想要解析或格式化 java.util.Date 时,您需要有一个明确定义的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    相关资源
    最近更新 更多