嗨,我的网络应用程序中的每个人都在生成一个验证码,用户可以输入验证码进行帐户激活。我希望生成的验证码在12小时或24小时的特定时间段内有效。我正在存储代码生成日期和时间的详细信息,但我如何检查有效性意味着假设用户输入代码我如何检查他是否在验证期间输入了代码?如何比较日期和时间?谢谢
答案 0 :(得分:4)
我不认为这是一个日期和时间。我认为它是及时的。生成验证码时,请在“24小时后”立即计算,然后存储。然后在验证验证码时检查“当前时刻”。
您可以使用System.currentTimeMillis()
将时间作为long
值,以毫秒为单位。 (这是自Unix时代以来,但这实际上与此无关。)事实上,我建议您创建一种Clock
接口,可用于确定当前时刻,使用{{1}实现} - 或Joda Time等价物。这样,您就可以更轻松地对代码进行单元测试。
因此,请使用当前的毫秒数,为其添加适当的持续时间(同样,以毫秒为单位),这就是您的到期时间。
答案 1 :(得分:2)
使用我的sql等数据库来存储验证码。有一个名为createdTime的字段。当用户尝试验证时,从now()中减去createdTime以获得少于24。
回复:日期减法
select something from someTable where createdTime >= date_sub(now(), interval 24 hour)
答案 2 :(得分:1)
http://docs.oracle.com/javase/7/docs/api/java/util/Date.html
after()和before()方法完全符合你的要求。
答案 3 :(得分:1)
Java Date类具有before()和after()函数,用于比较日期。
答案 4 :(得分:1)
您可以使用Calender对象的before
或after
例如:
// initialize ur date here
Date issueded = null;
Calendar issuedDate = Calendar.getInstance();
issuedDate.setTime(issueded);
Calendar expiredDate = Calendar.getInstance();
// minus 12 H
expiredDate.add(Calendar.HOUR, -12);
if(expiredDate.before(issuedDate)) {
// do ur thing
} else {
// expired
}