过程中,被dash.length()坑了一把。
废话少说,上coding.
public static Date convertStrToDate(String s) throws Exception {
String dash = "-"; String slash = "/"; String str = s.replace("*", ""); int firstDash = str.indexOf(dash); int lastDash = str.lastIndexOf(dash); int firstSlash = str.indexOf(slash); int lastSlash = str.lastIndexOf(slash); int dashLength = str.length() - str.replace(dash, "").length(); int slashLength = str.length() - str.replace(slash, "").length(); String year, month, day, strDate; if (s.contains(dash) && s.contains(slash)) { throw new Exception("日期格式不合法:" + s); } LogKit.info("dash个数" + dashLength); Date date = null; if (str.contains(dash)) { year = str.substring(0, firstDash).trim(); month = dashLength == 1 ? str.substring(firstDash, str.length()).substring(dash.length()) : str.substring(firstDash, lastDash).substring(dash.length()); day = dashLength == 1 ? "1" : str.substring(lastDash, str.length()).substring(dash.length()); if (Integer.valueOf(month) > 12 || Integer.valueOf(day) > 31 || Integer.valueOf(year) < 2017) { throw new Exception("日期不合法:" + s); } strDate = year + dash + month + dash + day; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); date = sdf.parse(strDate); LogKit.info("日期"+strDate); } LogKit.info("slash个数" + slashLength); if (str.contains(slash)) { year = str.substring(0, firstSlash).trim(); month = slashLength == 1 ? str.substring(firstSlash, str.length()).substring(slash.length()) : str.substring(firstSlash, lastSlash).substring(slash.length()); day = slashLength == 1 ? "1" : str.substring(lastSlash, str.length()).substring(slash.length()); if (Integer.valueOf(month) > 12 || Integer.valueOf(day) > 31 || Integer.valueOf(year) < 2017) { throw new Exception("日期不合法:" + s); } strDate = year + slash + month + slash + day; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); date = sdf.parse(strDate);}
} return date; }