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;
}

转载于:https://www.cnblogs.com/willam-vicky/p/9466675.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值