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)。