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

时间:2012-07-09 04:07:39

标签: java

E.g。我可能有如下输入字符串:

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

是否可以进行日期解析以找出格式?

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

或者是否有更优雅的方式来处理这个问题?

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我建议使用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");

将成功解析,因为最终模式将起作用。