Java如何使用SimpleDateFormat解析多种格式的日期

我正在尝试解析文档中的某些日期。看来用户已经以类似但并非确切的格式输入了这些日期。

格式如下:

9/09

9/2009

09/2009

9/1/2009

9-1-2009

尝试解析所有这些的最佳方法是什么?这些似乎是最常见的,但是我想让我感到困扰的是,如果我的模式“ M / yyyy”永远不会在“ MM / yyyy”之前出现,我是否必须设置try / catch块以最小限制嵌套到最大限制方式?看来肯定会花费很多代码重复才能实现此目的。

回答:

你需要SimpleDateFormat为每个不同的模式使用不同的对象。也就是说,由于以下原因,你不需要那么多不同的对象:

数字:对于格式设置,图案字母的数量是最小位数,较短的数字用零填充此数量。对于解析,除非需要将两个相邻字段分开,否则将忽略模式字母的数量。

因此,你将需要以下格式:

  • "M/y"(即盖9/099/201909/2019
  • "M/d/y"(涵盖9/1/2019
  • "M-d-y"(涵盖9-1-2019

因此,我的建议是编写一种工作方式如下(未测试)的方法:

// ...

List<String> formatStrings = Arrays.asList("M/y", "M/d/y", "M-d-y");

// ...

Date tryParse(String dateString)

{

for (String formatString : formatStrings)

{

try

{

return new SimpleDateFormat(formatString).parse(dateString);

}

catch (ParseException e) {}

}

return null;

}

以上是 Java如何使用SimpleDateFormat解析多种格式的日期 的全部内容, 来源链接: utcz.com/qa/432767.html

回到顶部