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

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

  我正试图解析文档中的一些日期。用户输入这些日期的格式与此相似,但格式不准确。


以下是格式:


9/09

9/2009

09/2009

9/1/2009

9-1-2009 

尝试解析所有这些问题的最佳方法是什么?这些似乎是最常见的,但我想挂我的是,如果我有“M/yyy”的模式-总是在“MM/yyy”之前捕获,那么我是否必须以对最严格的方式进行嵌套的最少限制的方式来设置我的try/catch块呢?看起来,要做到这一点,肯定需要大量的代码复制。


汪汪一只猫
浏览 1595回答 3
3回答

紫衣仙女

你需要用不同的SimpleDateFormat对象用于每个不同的模式。也就是说,你不需要那么多不同的,多亏了这个:编号:对于格式设置,模式字母的数量是最小的数字数,较短的数字是零填充到此数量。对于解析,除非需要将两个相邻字段分开,否则将忽略模式字母的数量。因此,您需要这些格式:"M/y"(包括9/09,&nbsp;9/2009,和09/2009)"M/d/y"(包括9/1/2009)"M-d-y"(包括9-1-2009)所以,我的建议是写一个像这样工作的方法(未测)://&nbsp;...List<String>&nbsp;formatStrings&nbsp;=&nbsp;Arrays.asList("M/y",&nbsp;"M/d/y",&nbsp;"M-d-y");//&nbsp;...Date&nbsp;tryParse(String&nbsp;dateString){ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;formatString&nbsp;:&nbsp;formatStrings) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;SimpleDateFormat(formatString).parse(dateString); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch&nbsp;(ParseException&nbsp;e)&nbsp;{} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java