你需要
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;}


