万能的JAVA任何格式日期转换工具类

客官°小女子只卖身不卖艺 2022-05-09 00:52 301阅读 0赞
  1. 过程中,被dash.length()坑了一把。

废话少说,上coding.

  1. public static Date convertStrToDate(String s) throws Exception {
  2. String dash = "-";
  3. String slash = "/";
  4. String str = s.replace("*", "");
  5. int firstDash = str.indexOf(dash);
  6. int lastDash = str.lastIndexOf(dash);
  7. int firstSlash = str.indexOf(slash);
  8. int lastSlash = str.lastIndexOf(slash);
  9. int dashLength = str.length() - str.replace(dash, "").length();
  10. int slashLength = str.length() - str.replace(slash, "").length();
  11. String year, month, day, strDate;
  12. if (s.contains(dash) && s.contains(slash)) {
  13. throw new Exception("日期格式不合法:" + s);
  14. }
  15. LogKit.info("dash个数" + dashLength);
  16. Date date = null;
  17. if (str.contains(dash)) {
  18. year = str.substring(0, firstDash).trim();
  19. month = dashLength == 1 ? str.substring(firstDash, str.length()).substring(dash.length()) : str.substring(firstDash, lastDash).substring(dash.length());
  20. day = dashLength == 1 ? "1" : str.substring(lastDash, str.length()).substring(dash.length());
  21. if (Integer.valueOf(month) > 12 || Integer.valueOf(day) > 31 || Integer.valueOf(year) < 2017) {
  22. throw new Exception("日期不合法:" + s);
  23. }
  24. strDate = year + dash + month + dash + day;
  25. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  26. date = sdf.parse(strDate);
  27. LogKit.info("日期"+strDate);
  28. }
  29. LogKit.info("slash个数" + slashLength);
  30. if (str.contains(slash)) {
  31. year = str.substring(0, firstSlash).trim();
  32. month = slashLength == 1 ? str.substring(firstSlash, str.length()).substring(slash.length()) : str.substring(firstSlash, lastSlash).substring(slash.length());
  33. day = slashLength == 1 ? "1" : str.substring(lastSlash, str.length()).substring(slash.length());
  34. if (Integer.valueOf(month) > 12 || Integer.valueOf(day) > 31 || Integer.valueOf(year) < 2017) {
  35. throw new Exception("日期不合法:" + s);
  36. }
  37. strDate = year + slash + month + slash + day;
  38. SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
  39. date = sdf.parse(strDate);
  40. }
  41. }
  42. return date;
  43. }

发表评论

表情:
评论列表 (有 0 条评论,301人围观)

还没有评论,来说两句吧...

相关阅读