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
是否可以进行日期解析以找出格式?
但是如果我在我的日志文件中解析,我可能会看到很多异常被抛出。
或者是否有更优雅的方式来处理这个问题?
由于
答案 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");
将成功解析,因为最终模式将起作用。