原理其实很简单,就是根据两个日期相差的天数,小时数,分钟数,秒数计算之后转换成HH:mm格式,废话不多说,直接上代码
public static String timeSubtraction(String time1, String time2) throws ParseException {
/**
*@description time2 是大的时间
*@param [time1, time2]
*@return java.lang.String
*/
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制
long newTime1 = simpleDateFormat.parse(time2).getTime();
long newTime2 = simpleDateFormat.parse(time1).getTime();
Long result = newTime1 - newTime2; //获取两时间相差的毫秒数
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long hour = result % nd / nh; //获取相差的小时数
long min = result % nd % nh / nm; //获取相差的分钟数
long day = result / nd;
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");//初始化Formatter的转换格式。
long hMiles = hour * 3600000; //小时数转换成毫秒
long mMiles = min * 60000; //分钟数转换成毫秒
long resulMiles = (hMiles + mMiles);
//下面这段很重要 ,计算之后设置时区,不然会差几小时
formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
String resultFormat = formatter.format(resulMiles);
//我这段是在一天内计算的 如果大于一天 就把下面的 day*24加到小时上就可以了
return resultFormat + "," + day;
}
博客介绍了在Java中计算两个日期相差时长并转换为HH:mm格式的方法。通过获取两日期相差的毫秒数,分别计算出相差的小时数、分钟数和天数,最后设置时区进行格式化输出,还提及大于一天时的处理方式。
2950

被折叠的 条评论
为什么被折叠?



