以毫秒为单位的时间差



jsp code:

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小时,则希望使链接过期或者执行其他代码块。但是我不能得到精确的时差。

我不确定我完全理解你的问题,但在我看来,d3有确切的时差。所以我想你的问题是当你做

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

你没有得到足够的精度

如果是这种情况,您可以直接执行

if (d3 < 48*3600*1000)测试d3是否小于48小时(毫秒)

希望我理解你的问题:)

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

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

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

相关内容

  • 没有找到相关文章

最新更新