Я пишу простую программу входа в Java EE с использованием шаблона MVC, и я хочу предупредить пользователя о том, что его/ее пароль старше года. В настоящее время я могу получить данные из базы данных и преобразовать их в строку, но после этого я не знаю, как сравнить ее с текущей датой.Как сравнить дату с mySQL с текущей датой в java?
Это то, что я до сих пор:
public String validateAccount(String email, String enterPassword) {
try {
Class.forName(driverName).newInstance();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection connection;
try {
connection = DriverManager.getConnection(dbURL, username, password);
// Retrive current user data from database
String getCredentials = "SELECT id,dateSet,strength FROM users WHERE email=? AND hashPassword=SHA2(CONCAT(?, salt), 256)";
PreparedStatement verifyCredentials = connection
.prepareStatement(getCredentials);
verifyCredentials.setString(1, email);
verifyCredentials.setString(2, enterPassword);
ResultSet foundData = verifyCredentials.executeQuery();
while (foundData.next()) {
System.out.println("Found account");
int id = foundData.getInt("id");
String dateSet = foundData.getString("dateSet");
String strength = foundData.getString("strength");
// ... do something with these variables ... if
if (strength.equals("Weak")) {
return "1";
} else if (/*Check if the date in the database is over a year old, and return 2*/) {
return "2";
} else {
return "0";
}
}
foundData.close();
return "Account not found, re-enter your info again";
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
Я не familizarized с методом .getTimestamp() или с датами в целом. Какой формат возвращал .getTimestamp и как его преобразовать? –
Работая в предположении, что столбец в базе данных является типом DATE, тогда gettimestamp вернет экземпляр метки времени, который затем может дать вам длинный, который является числом миллисекунд с момента создания unixepoc. Класс Date имеет конструктор, который занимает длинное число миллисекунд, поскольку unixepoc как параметр, так что вы получите экземпляр даты :) – JustDanyul
Вы, мужчина! Я думаю, это сработало. : D –