Index: forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java =================================================================== diff -u -r16047 -r16049 --- forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 16047) +++ forgon-tools/src/main/java/com/forgon/tools/date/DateTools.java (.../DateTools.java) (revision 16049) @@ -8,6 +8,7 @@ import java.util.GregorianCalendar; import java.util.Locale; +import com.beust.jcommander.ParameterException; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.FastDateFormat; @@ -778,21 +779,41 @@ public static Date convertTime(String applyDate, SimpleDateFormat sdf, String retryConvertFormat){ Date convertTime; try { - convertTime = sdf.parse(applyDate); + convertTime = convertTime(applyDate, sdf); } catch (ParseException e) { + //如果是ParseException,会尝试再次转换 if (org.apache.commons.lang3.StringUtils.isNotBlank(retryConvertFormat)){ logger.info("转换时间失败,现在开始尝试重新转换:" + applyDate); sdf = new SimpleDateFormat(retryConvertFormat); //因为用了递归的方法,所以再次转换的时候retryConvertFormat要设置成空,不然会无限递归下去 return convertTime(applyDate, sdf, null); } else { + logger.error(e); throw new RuntimeException(e); } } - logger.info("转换时间成功:" + convertTime); return convertTime; } + /** + * 转换时间重载(此方法如果转换出错,不会再次尝试去转换) + * @param applyDate 要转换的时间 + * @param sdf SimpleDateFormat的格式 + * @return + * @throws ParseException + */ + public static Date convertTime(String applyDate, SimpleDateFormat sdf) throws ParseException { + try { + Date convertTime = sdf.parse(applyDate); + logger.info("转换时间成功:" + convertTime); + return convertTime; + } + catch (ParseException e) { + logger.error(e); + throw e; + } + } + }