java 日期转换类_万能的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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值