1、报错
转换格式:SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
报错:
java.text.ParseException: Unparseable date: "2020/1/12"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.hxjs.website.modules.epanalysis.controller.ScehduledThread.run(ScehduledThread.java:53)
at com.hxjs.website.modules.sys.controller.SysLoginController$1.run(SysLoginController.java:106)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
2、分析原因
SimpleDateFormat simpleFormat = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
我所使用的与实际要转换的不一致,导致报错
3、解决
在转换的时候必须保持 转换字符串和转换类型格式一致
提供一个代码片段(只是简单做了一下判断,只能满足几种日期转换(写的不是很好,有待优化))文章来源:https://www.toymoban.com/news/detail-626738.html
/**
* 日期类型转换
* @param date
* @return
* @throws ParseException
*/
private Date dateCl(String date) throws ParseException {
SimpleDateFormat simpleDateFormat=null;
if (date.contains("-") && date.contains(":")){
if (Objects.equals(stringCount(date,":"),2)){
simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return simpleDateFormat.parse(date);
}else if (Objects.equals(stringCount(date,":"),1)){
simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm");
return simpleDateFormat.parse(date);
}
}else if (date.contains("/") && date.contains(":")){
if (Objects.equals(stringCount(date,":"),2)){
simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
return simpleDateFormat.parse(date);
}else if (Objects.equals(stringCount(date,":"),1)){
simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd hh:mm");
return simpleDateFormat.parse(date);
}
}else if (date.contains("/") && !date.contains(":")){
simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd");
return simpleDateFormat.parse(date);
}else if (date.contains("-") && !date.contains(":")){
simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.parse(date);
}
return null;
}
/**
* 获取字符串出现的次数
* @param data
* @param s
* @return
*/
private int stringCount(String data,String s){
String str = data;
String searchChar = s;
int count = 0;
int origialLength = str.length();
str = str.replace(searchChar, "");
int newLength = str.length();
count = origialLength - newLength;
return count;
}
4、补充
1、使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的,推荐使用LocalDateTime
参考此篇博客文章来源地址https://www.toymoban.com/news/detail-626738.html
到了这里,关于SimpleDateFormat :{ ParseException: Unparseable date} 问题原因以及解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!