时间的差异以毫秒为单位?

时间:2014-05-12 13:41:31

标签: java hibernate date datetime timestamp

jsp代码:

String activationkey=request.getParameter("activationkey");   
      System.out.println("key is=="+activationkey);
      CustinfoDao custinfoDao = new CustinfoDaoImpl();
      CustomerInfo cust=custinfoDao.getDateByActivationKey(activationkey);


            DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
           //get current date time with Date()
           Date date = new Date();


        Date d1=new Date();
        System.out.println("d1================="+d1.getTime());

        Date d2= cust.getCreatedDate();
        System.out.println("d2================="+d2.getTime());



        long d3=d1.getTime() - d2.getTime();
        System.out.println("d3 is =="+d3);
        long diffHours = TimeUnit.MILLISECONDS.toHours(d3);
        System.out.println("diff in hours=="+diffHours);
        System.out.println("diff in hours=="+(diffHours<48));


           if(diffHours < 48){

 %>
       <script type="text/javascript">

           window.open("http://bdisys.com/Download/BizViz/BizVizPackage.zip");

       </script>
 <%        
       }
       else{
 %>        
           <div>Your Link has been Expired....</div>
 <%      }

 %>

输出:

 key is==L2NWL49fx5
d1=================1399901683076
d2=================1399833000000
d3 is ==68683076
diff in hours==19
diff in hours==true

我希望获得当前日期与用户通过表单注册的日期之间的小时数差异,如果差异小于48小时,则希望将链接过期 或者想要执行其他代码块。但我无法得到确切的时间差异。任何帮助都会被贬低。

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你的问题,但在我看来d3有确切的时差。所以我认为你的问题就在你做的时候

long diffHours = TimeUnit.MILLISECONDS.toHours(d3);

你的精确度不够。

如果是这种情况,你可以坚持下去

if (d3 < 48*3600*1000)测试d3是否小于48小时(以毫秒为单位)。

希望我理解你的问题:)

答案 1 :(得分:0)

new Date()将返回当前时间,包括小时,分钟,秒,毫秒。

custinfoDao.getDateByActivationKey(activationkey)似乎正在返回添加记录的时间。

这些时间肯定会有所不同,因为您不仅要比较日期(YYYY / MM / DD),还要比较时间(YYYY / MM / DD HH:mm:ss)。