Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Comparar minuto com LocalDateTime

Fala galera blz ?

Eu tenho uma data/hora feita com LocalDateTime que representa quando o usuário fez seu último login.

public class User implements Serializable  {

    /**
     * 
     */
    private static final long serialVersionUID = 5336911089378598241L;

    private Long id;
    private String name;
    private LocalDateTime lastLogin;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public LocalDateTime getLastLogin() {
        return lastLogin;
    }

    public void setLastLogin(LocalDateTime lastLogin) {
        this.lastLogin = lastLogin;
    }
}

O que eu preciso fazer é verificar se o último login foi a MENOS que 30 minutos atrás.

Alguém saberia me dizer como fazer isso utilizando LocalDate ou LocalDateTime ?

Grato

3 respostas

Tenta o isBefore comparando com a data plus 30 minutos. Esse isBefore ou isAfter retornam boolean

Olá Jorge.

Além da solução proposta pelo Guilherme, você também pode utilizar o método until, que retorna a quantidade de minutos entre duas datas. Veja o exemplo abaixo:

LocalDateTime horarioLogin = usuario.getLastLogin();

long minutos = horarioLogin.until(LocalDateTime.now(), ChronoUnit.MINUTES);

// com a quantidade de minutos, você consegue fazer a lógica que quiser
System.out.println(minutos < 30 ? "Login a menos de 30 minutos" : "Login a mais de 30 minutos"); 
solução!

Opa fala pessoal blz ?

Valeu pela ajuda aí, fiz aqui e o código ficou assim:

        LocalDateTime sessionaLimitTime = user.getLastLogin().plus(30, ChronoUnit.MINUTES);
        if (sessionaLimitTime.isBefore(LocalDateTime.now())) {
        throw new SessionException(SESSAO_INVALIDA);
        }

Valeu xD