Java-分别计算两日期之间的相差的年份和天数

最近实习做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.结果如图所示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/suewar3/article/details/83003456