Estou precisando fazer no java algo como o “between” do SQL, so que no java, nao preciso saber a diferenca entre as datas, preciso apenas saber se uma determinada data esta entre outras duas.
Alguem sabe como fazer isso?
Date.after(Date) e Date.before(Date).
Between:
Date d = new Date();
if (d.after(outraData) && d.before(maisOutraData)) {
...
}
Usando uma variavel do tipo date, só comparar se a primeira vem antes da data que vc quer compara e se a segunda vem depois. Acho que é isso.
if(data1.after(dataCompara) && data2.before(dataCompara))
flag = true;
else
flag = false;
só complementando:
flag = data1.after(dataCompara) && data1.before(dataCompara);
edit: nome da variavel corrigido
Vê se isso pode ajudar:
sendo d1 e d2 dois objetos do tipo java.util.Date
d1.before(d2); //retorna true se d1 estiver antes de d2
d1.after(d2); //retorna true se d1 estiver depois de d2
[quote=andre.almeida]só complementando:
flag = data1.after(dataCompara) && data2.before(dataCompara);
cuidado.
Se o intervalo é entre A e B e a data a pesquisar é D
D está no intervalo se D >=A e D<=B ou, o que é o mesmo, se A <= D e B>=D
portanto o correto seria:
flag = D.after(A) && D.before(B);
ou
flag = A.before(D) && B.after(D);
ou seja, a sua ordem está trocada.
Mas o mais importante é que after e before não funcionam quando D =A ou D=B
a forma correta de fazer é usando a comparação matemática
public boolea isInInterval(Date D, Date A, Date B){
return D.compareTo(A) >=0 && D.compareTo(B)<=0;
}
violei a nomnclatura para ficar certo com o que escrevi antes.
A parte mais importante aqui é sempre colocar dentro de um método.
[quote=andre.almeida]só complementando:
flag = data1.after(dataCompara) && data2.before(dataCompara);
Diria eu que se você comparar uma data sempre com uma data igual, esta comparação nunca vai ser “true”.
Tipo assim:
flag = 1 >2 && 1 < 2;
(…)
editei o nome da variavel (y)
Existe a biblioteca Joda Time:http://joda-time.sourceforge.net/.
Facilita bastante trabalhar com Java, ela tem a classe Interval atraves dela
é possível ver se um determinada intervalo de tempo contém uma data.
Date inicio=new Date();
Date fim=new Date();
Interval intervalo=new Interval(inicio.getTime(),fim.getTime());
if((intervalo.contains(suaData.getTime())
return true;
else
return false;