java.text.ParseException: Unparseable date

427 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

问题描述

java.text.ParseException: Unparseable date: "2022-05-16"

代码

Date date;
//实现将字符串转成⽇期类型(格式是yyyy-MM-dd HH:mm:ss)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    date = dateFormat.parse(s);
    return date;
} catch (ParseException e) {
    date = null;
}

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 这就表示我们输入的字符串必须按照这种格式,当输入的字符串为"2022-05-16"会因为跟定义的格式不匹配报错。 我们可以通过这种方式实现字符串和日期方式的转换。

java比较时间的先后

可以通过Date.before()Date.after()Date.equals()的方式进行时间的比较。

beginTime:开始时间 endTime:结束时间

Date now = DateTime.now();//获取当前时间
if (now.after(endTime)){
    //当前系统时间在结束时间之后
}else if(now.after(beginTime)&&now.before(endTime)){
    //当前系统时间在时间范围内
}else{
    //当前系统时间在开始时间之前
}

计算时间

需求:
某一基准时间开始,增量的时间值,基准时间加增量时间值后的时间控制在一个时间范围内,如前后七天,依次递增,需要获取每次增量前后的确切的开始时间和结束时间。

可以使用Calendar.getInstance()不仅能获取当前的时间,还能指定需要获取的时间点

通过beginTime.setTime(baseLineTime)的方式设置基准时间。

gap:时间增量(两个时间段的间隔)
before:增量后的开始时间
endTime:增量后的结束时间
beginTime.add(Calendar.DATE, day); //数字参数可修改,+表示n天之后,-表示n天之前的时间
Calendar beginTime = Calendar.getInstance();
beginTime.setTime(baseLineTime);
beginTime.add(Calendar.DATE, gap - before);
patientFollowUp.setBeginTime(beginTime.getTime());
Calendar endTime = Calendar.getInstance();
endTime.setTime(baseLineTime);
endTime.add(Calendar.DATE, gap + after);
patientFollowUp.setEndTime(endTime.getTime());
Calendar baseTime = Calendar.getInstance();
baseTime.setTime(baseLineTime);
baseTime.add(Calendar.DATE, gap);
baseLineTime = baseTime.getTime();

补充

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, mon); //数字参数可修改,+表示n月之后,-表示n月之前的时间
cal.add(Calendar.YEAR, -1); //数字参数可修改,+表示n年之后,-表示n年之前的时间
cal.add(Calendar.MINUTE, min); //数字参数可修改,+表示n分钟之后,-表示n分钟之前的时间