如何解析可能具有不同日期格式的字符串输入?

问题描述:

例如我可能有输入字符串象下面这样:如何解析可能具有不同日期格式的字符串输入?

2012-07-23T03:30:00.000Z

2012-06-25T13:00:00.000 + 08:00

对于这些两种情况下,我有不同的日期格式解析像例如如果是2012-07-23T03:30:00.000Z那么我需要使用yyyy-MM-dd'T'KK:mm:ss'.000Z

那么如果是2012-06-25T13:00:00.000+ 08:00我需要使用yyyy-MM-dd'T'KK:mm:ss'.000 + 08:00

可以使用日期解析来找出格式吗?

但是,如果我解析然后在我的日志文件中,我可能会看到许多异常被抛出。

还是有更好的方法来处理这个问题?

由于

我建议使用commons-lang项目中的DateUtils。您可以传递一系列格式来尝试解析日期。如果你问我,很干净。 http://commons.apache.org/lang/api-3.1/org/apache/commons/lang3/time/DateUtils.html#parseDate(java.lang.String,java.lang.String中...)

例如:

Date d = DateUtils.parse("2012-01-01", "yyyyMMdd", "MM/dd/yyyy", "yyyy-MM-dd"); 

将成功地分析,因为最后的模式会工作。

可以使用一个try/catch块为每一种可能的格式解析不同的时间格式。只有在所有解析失败的情况下,您才会传递异常。