Java如何使用SimpleDateFormat解析多种格式的日期
我正在尝试解析文档中的某些日期。看来用户已经以类似但并非确切的格式输入了这些日期。
格式如下:
9/099/2009
09/2009
9/1/2009
9-1-2009
尝试解析所有这些的最佳方法是什么?这些似乎是最常见的,但是我想让我感到困扰的是,如果我的模式“ M / yyyy”永远不会在“ MM / yyyy”之前出现,我是否必须设置try / catch块以最小限制嵌套到最大限制方式?看来肯定会花费很多代码重复才能实现此目的。
回答:
你需要SimpleDateFormat
为每个不同的模式使用不同的对象。也就是说,由于以下原因,你不需要那么多不同的对象:
数字:对于格式设置,图案字母的数量是最小位数,较短的数字用零填充此数量。对于解析,除非需要将两个相邻字段分开,否则将忽略模式字母的数量。
因此,你将需要以下格式:
"M/y"
(即盖9/09
,9/2019
和09/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