java时间差计算

来源:互联网 发布:c语言全屏玫瑰花代码 编辑:程序博客网 时间:2024/06/05 19:26

转载请注明出处:
http://blog.csdn.net/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+"秒");    }
原创粉丝点击