最近实习做CRUD操作时需要分别计算两日期之间的相差的年份和天数,尤其是计算天数时不需要自己编写方法来判断平年、闰年、大小月份的,只需要用到Java API的Date类的方法就行了,真的很方便,省了很多事情。
1.先两日期之间的相差的年份(学业期限 = 毕业时间 - 入学时间)
//学业期限 = 毕业时间 - 入学时间
String enrolmentTime =emm.getEnrolmentTime();//从数据库获取入学时间存入一个字符串中
String graduationTime = emm.getGraduationTime(); //从数据库获取毕业时间存入一个字符串中
if(StringUtils.isNotEmpty(enrolmentTime) && StringUtils.isNotEmpty(graduationTime)){//毕业时间 与 入学时间均不为空时
long tSenrolmentTime = Long.parseLong(enrolmentTime);//long型的入学时间戳
long tSgraduationTime = Long.parseLong(graduationTime);//long型的毕业时间戳
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String sdenrolmentTime = sdf.format(new Date(tSenrolmentTime));//这个是要转成上一行格式的入学时间
String sdgraduationTime = sdf.format(new Date(tSgraduationTime));
int enrolmentTimes = Integer.parseInt(sdenrolmentTime.substring(0,4));//截取前四位字段转化为整型(就是取了年份)
int graduationTimes = Integer.parseInt(sdgraduationTime.substring(0,4));
empMi.setAcademicPeriod(graduationTimes-enrolmentTimes);
}else{
empMi.setAcademicPeriod(null);//置空值
}
2.计算两进修日期之间的天数(进修时长 = 进修结束时间 - 进修开始时间)
//进修时长 = 进修结束时间 - 进修开始时间 (这是需要计算两日期之间天数的)
String teach1Date = emm.getTeach1Date(); //进修开始日期
String teach2Date = emm.getTeach2Date(); //进修结束日期
if(StringUtils.isNotEmpty(teach1Date) && StringUtils.isNotEmpty(teach2Date)){
long tSteach1Date = Long.parseLong(teach1Date);//long型的进修开始时间戳
long tSteach2Date = Long.parseLong(teach2Date);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sdtSteach1Date = sdf.format(new Date(tSteach1Date));//这个是要转成上一行格式的进修开始时间
String sdtSteach2Date = sdf.format(new Date(tSteach2Date));
Date d1 = sdf.parse(sdtSteach1Date);
Date d2 = sdf.parse(sdtSteach2Date);
long diff = d2.getTime() - d1.getTime();//这样得到的差值是微秒级别
long days = diff / (1000 * 60 * 60 * 24);//得到两者相差的天数
int TrainingTimes = (int)days;
empMi.setTrainingTime(TrainingTimes);
}else{
empMi.setTrainingTime(null);
}
3.结果如图所示