Java计算两时间相差日期,返回HH:mm 小时分钟格式

原理其实很简单,就是根据两个日期相差的天数,小时数,分钟数,秒数计算之后转换成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;
}
posted @ 2018-08-13 10:35  William_Vicky  阅读(3738)  评论(0编辑  收藏  举报