0

例如,我可能有如下输入字符串:

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

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

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

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

谢谢

4

2 回答 2

1

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

于 2012-07-09T04:13:28.440 回答
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");

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

于 2012-07-09T04:14:17.860 回答