由于是两个日期类型的时间进行相减,接下来我们先做一些准备工作。
创建一个dateToCalendar()方法,用于将Date类型转化为Calendar类型:
/**
*@author: Max
*@time: 2021/8/6
*@description: Date类型转Calendar类型
*@param: [date]
*@return: java.util.Calendar
*/
public static Calendar dateToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
接下来,就隆重邀请我们的主角getSubtractTime()方法登场。
/**
*@author: Max
*@time: 2021/8/6
*@description: 得到两个日期相差的天,时,分,秒
*@param: [subtractDate, date]
*@return: java.lang.String
*/
public static String getSubtractTime(Date subtractDate, Date date) {
long subtractResult = subtractDate.getTime() - date.getTime();
// 转换成Calendar类型
Calendar subtractTime = dateToCalendar(subtractDate);
Calendar firstTime = dateToCalendar(date);
int year = subtractTime.get(Calendar.YEAR) - firstTime.get(Calendar.YEAR);
int month = subtractTime.get(Calendar.MONTH) - firstTime.get(Calendar.MONTH);
int day = subtractTime.get(Calendar.DAY_OF_MONTH) - firstTime.get(Calendar.DAY_OF_MONTH);
if (day < 0) {
month -= 1;
subtractTime.add(Calendar.MONTH, -1);
day = day + subtractTime.getActualMaximum(Calendar.DAY_OF_MONTH);//获取日
}
if (month < 0) {
month = (month + 12) % 12;//获取月
year--;
}
long days = subtractResult / (1000 * 60 * 60 * 24);
long hours = (subtractResult - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);//获取时
long minutes = (subtractResult - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60);//获取分钟
long s = (subtractResult / 1000 - days * 24 * 60 * 60 - hours * 60 * 60 - minutes * 60);//获取秒
return day + "天 " + hours + ":" + minutes + ":" + s;
}
完事。怎么使用相信伙伴们看下代码就能够知道了,这里小编就不再赘述了。关注我,升职加薪少不了你!