2015-12-14 1 views
0

Я хочу сравнить временную метку, исходящую от db, и посмотреть, если это 1 час 59 минут или нет, я внедрил следующий код. Пожалуйста, просмотрите его и предложите изменения:Проверьте, есть ли временная метка, исходящая из БД, 2 часа назад или старше

private static final long TIME_LIMIT= 7199 * 1000; 

    private Token getTokenFromDB() 
     { 
      InterfaceRequestResponseDAO.getInstance().getEntityManager().createNamedQuery (InterfaceRequestResponse.Queries.GET_TOKEN) // 
        .setParameter ("token", InterfaceRequestResponse.COL_RESPONSEEND)// 
        .setParameter ("interfaceRequestResponseID", this.getInterfaceRequestResponseID())// 
        .executeUpdate(); 
      // authenticationToken.getResponseEnd(); 
      long responseEnd = System.currentTimeMillis(); 
      if (responseEnd < TIME_LIMIT) 
       return authenticationToken; 
      else 
       return NOT_VALID; 
+0

Я предлагаю вам использовать [ 'JodaDate'] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html). –

+0

Каким образом u plz может предложить немного подробнее? –

ответ

0

Я предлагаю вам использовать JodaDate ..

Я реализовал то же самое в проекте. Я сделал, что я сохранил время истечения, а не созданную временную метку. Это упрощает управление.

Everytime я обновить маркер, я обновить expireTime, добавив offset

DateTime expireTime = new DateTime(new Date()); 

expireTime = expireTime.addHours(2);//because token expires in 2 hours 

А потом я храню на этот раз.

Когда я прошу, я использовал, чтобы проверить, не истечет ли текущее время <.

DateTime expireTime = getTimeFromDB(); 

DateTime now = new DateTime(new Date()); 

if(now.isBefore(expireTime)) 
{ 
//valid token. 
} 
else 
{ 
// refresh your token and update the time. 
} 
Смежные вопросы