【java计算两个日期间相差的天数/小时数/分钟数,并保留N位小数】

java计算两个日期间相差的天数/小时数/分钟数,并保留N位小数

以计算两个日期之间的小时数为例

public void mytest15() throws ParseException {
		String startTime = "2019-11-08 10:12:00";
		String endTime = "2019-11-08 17:23:00";
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date startDate = dateFormat.parse(startTime);
		Date endDate = dateFormat.parse(endTime);
		Integer datePoor = getDatePoor(startDate,endDate);
		BigDecimal b = new BigDecimal((double)datePoor/60);
		Double hour = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();//第一个参数是保留小数的位数
		System.out.println(hour);
	}

public static Integer getDatePoor(Date startDate, Date endDate) {
    	 
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = endDate.getTime() - startDate.getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        Long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
        Long mymint = diff/1000/60;
        int intValue = mymint.intValue();
        return intValue;
    }

执行程序,得到结果:7.18

public void ShowTimeInterval(Date date1, Date date2) {
 long lDate1 = date1.getTime();

long lDate2 = date2.getTime();

 long diff = (lDate1 < lDate2) ? (lDate2 - lDate1) : (lDate1 - lDate2);

 long day = diff / (24 * 60 * 60 * 1000);

 long hour = diff / (60 * 60 * 1000) - day * 24;

 long min = diff / (60 * 1000) - day * 24 * 60 - hour * 60;
 
 long sec = diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;

 System.out.println("date1 与 date2 相差 " + day + "天" + hour + "小时" + min + "分" + sec + "秒");
 }
原文链接:https://blog.csdn.net/weixin_30800151/article/details/111968010

新的改变

转载来自于https://blog.csdn.net/itrytellyou/article/details/102973249

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值