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小时,则希望将链接过期 或者想要执行其他代码块。但我无法得到确切的时间差异。任何帮助都会被贬低。
答案 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)。