万能的JAVA任何格式日期转换工具类
过程中,被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;
}
还没有评论,来说两句吧...