Сравнение достоверности в Java - PullRequest
1 голос
/ 29 марта 2012

Привет всем в моем веб-приложении, я генерирую код подтверждения, который должен быть введен пользователем для активации учетной записи.Я хочу, чтобы сгенерированный проверочный код был действителен в течение определенного периода времени, скажем, 12 часов или 24 часов.Я сохраняю детали даты и времени, когда генерируется код, но как я могу проверить правильность, значит предположить, что пользователь ввел код, как я могу проверить, что он ввел код в период проверки или нет?Как сравнить дату и время вместе?Спасибо

Ответы [ 5 ]

4 голосов
/ 29 марта 2012

Я бы не думал об этом как о дате и времени как таковых. Я бы подумал об этом как о моменте времени . Когда вы генерируете код подтверждения, отработайте момент времени «24 часа» и сохраните его. Затем просто проверьте «текущий момент» при подтверждении кода подтверждения.

Вы можете использовать System.currentTimeMillis(), чтобы получить мгновенное значение long в миллисекундах. (Это с эпохи Unix, но здесь это на самом деле не имеет значения.) На самом деле, я бы предложил создать своего рода интерфейс Clock, который можно использовать для определения текущего момента, с реализацией, использующей System.currentTimeMillis() - или Время Joda эквивалент. Таким образом, вы можете упростить модульное тестирование кода.

Итак, возьмите текущее количество миллисекунд, добавьте к нему подходящую продолжительность (опять же, в миллисекундах), и это ваш момент истечения.

2 голосов
/ 29 марта 2012

Используйте базу данных, такую ​​как мой sql, для хранения кода подтверждения.есть поле с именем createTime.Когда пользователь пытается подтвердить, вычтите из этого значения selectedTime (), чтобы получить значение меньше 24.

RESPONSE: вычитание даты

 select something from someTable where createdTime >= date_sub(now(), interval 24 hour)
1 голос
/ 29 марта 2012

Вы можете использовать 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
}
1 голос
/ 29 марта 2012

Класс Java Date имеет функции before () и after () для сравнения дат.

1 голос
/ 29 марта 2012

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

методы after () и before () делают то, что вам нужно.

...