检查日期是否更改

时间:2013-06-03 13:59:58

标签: java swing date collections time

我正在Java Swing的一个考勤项目上工作。登录应该每天只有一次。

我的项目包含登录页面,其中包含一个用户名和密码的数据库,我只想确保每天只进行一次登录(员工的出勤更新)。

如何检查日期是否更改?

3 个答案:

答案 0 :(得分:3)

如果有人每天登录多次,这真的很重要吗?实际上,您的要求存在欺骗性问题。假设一位同事偷了我的密码,他用它以我的身份登录。然后我进来了,我现在无法登录。最好允许用户随时登录,并显示“您上次登录于美国东部时间2013年6月3日上午8:45”的消息。

如果您需要此确切要求,请将最后一个登录日期作为SQL DATE类型存储在数据库中,该类型不具有时间。登录代码看起来像

PreparedStatement ps = conn.prepareStatement(
    "SELECT last_logon FROM USERS WHERE username = ? AND passwordHash = ?");
// Please don't store the password itself in the database.
ps.setString(1, username);
ps.setString(2, sha1(password, salt)); // very vague, I know.
ResultSet rs = ps.executeQuery();
if (rs.next()) {
    java.sql.Date lastLogin = rs.getDate("last_logon");
    // Check that last_logon isn't today.
    // Use an UPDATE to update the field.
}

这实际上不是Swing特定的,甚至不是特定于Java的。您将需要了解数据库如何计算消息哈希,以及如何将salt应用于密码。你需要决定盐源。

答案 1 :(得分:1)

如果你正在使用Java日历,你也可以只存储最后一次登录,然后与当前的登录进行比较:

 Calendar lastLogin = // however you set this
 Calendar currentLogin = // now, again, however you set it
 if (currentLogin.get(Calendar.DAY_OF_YEAR) == lastLogin.get(Calendar.DAY_OF_YEAR))
 {
   // it's the same day
 }

答案 2 :(得分:0)

创建一个数据库表,用于存储login数据的日志数据,并包含useriddatelogin列信息。如果login值为0,您可以编程,然后该人没有登录,否则他登录。如果您足够聪明,甚至不需要login列。现在,如果用户尝试登录,请检查当天针对该用户的记录是否退出。

这就是全部