java时间差计算

转载请注明出处:
http://blog.youkuaiyun.com/user11223344abc?viewmode=contents
出自【蛟-blog】

直接上代码了,不过我还是简单说下这段代码的使用场景:
这是我在做一个订单详情的时候需要用到的一个方法。

具体需求是:

  • 服务器会返回给我订单的创建时间
  • 然后有一个需求前提就是说,当一个订单被创建后48小时不付款的话这个订单就自动取消。在不考虑本地时间被恶意篡改的情况下(System.currentTimeMillis()合理性),

那么针对这个需求最直接的逻辑是:

  • 根据创单时间,结合48小时规则,得到结束时间
  • 根据System.currentTimeMillis()得到现在的时间
  • 用结束时间减去现在的时间就是这个我需要的时间差

具体代码实现如下:

 public void testTimeCalc(){
        
        DateFormat df = new SimpleDateFormat("yy-MM-dd hh:mm:ss");

        //创单时间
        long ctime  = 1499739011000l;//7月11日10点10分10秒
        String ctimeStr = df.format(new Date(ctime));
        Log.e("timetest","ctimeStr 开始时间== " + ctimeStr);

        //根据创单时间去计算结束时间,创单48小时之后
        Date startDate = new Date(ctime);
        Calendar endCalendar = new GregorianCalendar();
        endCalendar.setTime(startDate);
        endCalendar.add(endCalendar.DATE, 2);//把日期往后增加一天.整数往后推,负数往前移动
        Date endDate = endCalendar.getTime();   //这个时间就是日期往后推一天的结果
        long endTime = endDate.getTime();
        String endTimeStr = df.format(new Date(endTime));
        Log.e("timetest","endTime 结束时间== " + endTimeStr);


        long currTime = System.currentTimeMillis();//现在
        String currTimeStr = df.format(new Date(currTime));
        Log.e("timetest","currTime 现在时间== " + currTimeStr);


        long diff = endTime - currTime;


        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 s=(diff/1000-day*24*60*60-hour*60*60-min*60);
        Log.e("timetest","差异  == " + day+"天"+hour+"小时"+min+"分"+s+"秒");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值