【问题标题】:Validity Comparision in javajava中的有效性比较
【发布时间】:2012-03-29 12:30:25
【问题描述】:

大家好,我的 Web 应用程序中的每个人都在生成一个验证码,供用户输入以激活帐户。我希望生成的验证码在特定时间段内有效,例如 12 小时或 24 小时。我正在存储生成代码的日期和时间的详细信息,但是我如何检查有效性意味着假设用户输入了代码,我如何检查他是否在验证期内输入了代码?如何同时比较日期和时间?谢谢

【问题讨论】:

  • 目前还不清楚问题到底是什么。我只会使用标准的日期/时间函数将生成的时间和输入的时间转换为具有返回秒数的减法运算符的格式。到底出了什么问题?
  • 我的问题是,当用户注册到站点系统时,会生成一个有效期为 12 或 24 小时的代码。我想确定用户是否在验证期内输入了代码。
  • 好的,就这样吧。当用户输入代码时,在数据库中查找代码生成的时间。从当前时间中减去它并与适当的秒数进行比较。或者,为了偷懒,将过期时间存储在数据库中。

标签: java date time compare


【解决方案1】:

我不认为它是一个日期和时间。我认为它是即时。当您生成验证码时,请计算“从现在起 24 小时后”的即时时间并将其存储。然后在验证验证码时检查“当前时刻”。

您可以使用System.currentTimeMillis() 以毫秒为单位获取long 值。 (从 Unix 时代开始,但这实际上无关紧要。)实际上,我建议您创建一种 Clock 接口,可用于确定当前时刻,并使用 System.currentTimeMillis()Joda Time 等价物。这样您就可以更轻松地对代码进行单元测试。

因此,取当前的毫秒数,添加适当的持续时间(同样,以毫秒为单位),这就是您的到期瞬间。

【讨论】:

  • 但我只是一个学生,我不知道如何添加时间或毫秒。你能帮我摆脱这个吗?以及如何获得 24 小时的毫秒数
  • @kanchan:我不会告诉你如何计算 24 小时内有多少毫秒 - 任何学生都应该能够自己做到这一点。 (小提示:一秒有多少毫秒?一分钟有多少秒......从那里开始计算。)一旦你知道了,只需将两个 long 值相加即可。跨度>
  • 我需要更多帮助。我照你说的做了。我用了当前的毫秒并添加了 5 分钟的毫秒(只是为了检查)。我添加了两个长数字。现在当用户输入代码时我应该比较什么。我应该再次花费当前时间的毫秒数还是什么?
  • @kanchan:是的,没错。 (确保您了解为什么您这样做是值得的……您是否对其他任何事情感到困惑?)
【解决方案2】:

使用my sql等数据库存储验证码。有一个名为 createdTime 的字段。当用户尝试验证时,从 now() 中减去 createdTime 以得到小于 24。

响应:日期减法

 select something from someTable where createdTime >= date_sub(now(), interval 24 hour)

【讨论】:

  • 是的,我也在做同样的事情。我有 mysql 数据库。但是怎么做时间减法
  • 随时!今天你需要帮助,明天我需要帮助。 :)
【解决方案3】:

http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

after() 和 before() 方法完全符合您的要求。

【讨论】:

  • 这里真的不需要Date。只需“几毫秒”就很容易存储和比较……
  • 确实如此。该死的,我恨你:)。我将把它留在这里作为替代方案,但赞成票归你所有,ofc。顺便说一句,在我看来,从来不需要 java.util.Date...
【解决方案4】:

Java Date 类具有用于比较日期的 before() 和 after() 函数。

【讨论】:

    【解决方案5】:

    您可以使用beforeafterCalender 对象 例如:

    // 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多