Comparar datas em java

Existem várias maneiras de comparar datas em Java. Internamente, uma data é representada como um ponto (longo) no tempo – o número de milissegundos que se passaram desde 1º de janeiro de 1970. Em Java, data é o objeto Date, o que significa que contém vários métodos (métodos) para comparar datas. Qualquer método de comparação de duas datas basicamente comparará o tempo decorrido de ambas as datas.

Degraus

Método 1 de 4: usando o comando `compareTo`

Imagem intitulada 4301351 1
1. Usar comparar com. Data implementa Comparável
Imagem intitulada 4301351 2
2. Crie os objetos Data. Você terá que criar cada objeto de data antes de compará-los. Uma maneira de fazer isso é aplicar a classe SimpleDateFormat. Permite inserir facilmente datas em objetos Date.
SimpleDateFormat sdf = new SimpleDateFormat(`aaaa-MM-dd`); //Para declarar valores em novos objetos de data. Use o mesmo formato de data ao criar datas Datedatum1 = sdf.parse(`1995-02-23`); //date1 é 23 de fevereiro de 1995 Date date2 = sdf.parse(`2001-10-31`); //date2 é 31 de outubro de 2001 Date date3 = sdf.parse(`1995-02-23`); //data3 é 23 de fevereiro de 1995
Imagem intitulada 4301351 3
3. Compare os objetos de data. O abaixo mostra cada caso - menor que, igual e maior que.
data1.compareTo(data2); //data1 < data2, menor que 0 data2.compareTo(data1); //data2 > data1, retorna maior que 0 data1.compareTo(data3); //data1 = data3, retorna 0

Método2 de 4: Usando os métodos `igual, depois e antes`

Imagem intitulada 4301351 4
1. Use igual, depois e antes. As datas podem ser comparadas usando os métodos equals, after e before. Se duas datas indicarem a mesma hora, o método equals retornará `true`. Os exemplos usam as datas criadas anteriormente por meio do método compareTo.
Imagem intitulada 4301351 5
2. Compare usando o método antes. O código abaixo mostra um caso de true e false. Se data1 for anterior a data2, o resultado será verdadeiro. Se não, antes retorna falso.
Sistema.Fora.print(data1.antes(data2)); // imprime verdadeiro Sistema.Fora.print(data2.antes(data2)); //imprime falso
Imagem intitulada 4301351 6
3. Compare isso com o método after. O código abaixo mostra um caso de true e false. Se date2 for posterior a date1, after retornará true. Se não, depois retorna false.
Sistema.Fora.print(data2.after(date1)); //imprime true System.Fora.print(data1.after(date2)); //imprime false
Imagem intitulada 4301351 7
4. Compare usando o método equals. O código abaixo mostra um caso de true e false. Se as datas forem iguais, equals retorna verdadeiro. Se não, igual retorna falso.
Sistema.Fora.print(data1.equals(date3)); //imprime true System.Fora.print(data1.equals(data2)); //imprime false

Método 3 de 4: usando a classe Calendar

Imagem intitulada 4301351 8
1. Use a classe Calendário. A classe Calendar também apresenta os métodos compareTo, equals, after e before, que funcionam da mesma forma descrita acima para a classe date. Portanto, se os dados de data forem mantidos em um calendário, não há necessidade de extrair `data` apenas para comparar duas datas.
Imagem intitulada 4301351 9
2. Criar instância do calendário. Para usar os métodos do Calendar, você precisa de algumas instâncias do Calendar. Felizmente, você pode usar o tempo gerado pelas instâncias Date.
Agenda call1 = Agenda.getInstance(); //declara cal1 Calendar cal2 = Calendar.getInstance(); //declara cal2 Calendar cal3 = Calendar.getInstance(); //declara cal3 cal1.setTime(data1); //aplica a data para cal1 cal2.setTime(data2); cal3.setTime(data3);
Imagem intitulada 4301351 10
3. Compare cal1 e cal2 usando antes. O código abaixo retorna true porque cal1 está antes de cal2.
Sistema.Fora.print(cal1.antes(cal2)); // imprime verdadeiro
Imagem intitulada 4301351 11
4. Compare cal1 e cal2 usando after. O código abaixo retorna false, pois cal1 vem antes de cal2.
Sistema.Fora.print(cal1.depois(cal2)); //imprime falso
Imagem intitulada 4301351 12
5. Compare cal1 e cal2 usando igual. O código abaixo mostra um exemplo de true e false. A condição depende das instâncias do Agenda que estão sendo comparadas. O código abaixo fornece `true` e depois `false` na próxima linha.
Sistema.Fora.println(cal1.equals(cal3)); //imprime true: cal1 == cal3 System.Fora.print(cal1.equals(cal2)); //imprime falso: call1 != cal2

Método 4 de 4: Usando o método `getTime`

Imagem intitulada 4301351 13
1. Usar getTime. Também é possível comparar diretamente dois pontos de tempo, embora qualquer uma das abordagens anteriores provavelmente produza resultados mais legíveis e, portanto, seja preferida. Esta é uma comparação de dois tipos de dados primitivos, então pode ser feito com `<`, `>` e `==`.
Imagem intitulada 4301351 14
2. Crie os objetos de `longo` tempo. Antes de poder comparar datas, você precisa criar inteiros longos a partir dos dados dos objetos Date criados anteriormente. Felizmente, o método getTime() fará a maior parte do trabalho para você.
long time1 = getTime(data1); //declara primitivo time1 de date1 long time2 = getTime(date2); //declara primitivo time2 de date2
Imagem intitulada 4301351 15
3. Use uma equação `menor que`. Use um símbolo "menor que" (<) para comparar esses dois valores inteiros. Como time1 é menor que time2, a primeira mensagem deve ser impressa na tela. A instrução else é incluída para a sintaxe correta.
if(hora1 < time2){ Sistema.Fora.println(`data1 é anterior a data2`); //imprime porque time1 < time2 } else { Sistema.Fora.println(`data1 é posterior ou igual a data2`); }
Imagem intitulada 4301351 16
4. Faça uma comparação `maior que`. Use o símbolo maior que (>) para comparar esses dois inteiros. Como time1 é maior que time2, a primeira mensagem é impressa na tela. A instrução else é incluída para a sintaxe correta.
if(tempo2 > hora1){ Sistema.Fora.println(`data2 vem após data1`); // imprime porque time2 > time1} else { Sistema.Fora.println(`data2 é anterior ou igual a data1`); }
Imagem intitulada 4301351 17
5. Faça uma comparação `igual a`. Use o símbolo (==) para comparar esses dois inteiros. Como time1 é igual a time3, a primeira mensagem deve ser impressa. Se o programa chegar ao comando else, significa que os tempos não são iguais.
if(time1 == time2){ System.Fora.println(`As datas coincidem`); } else { Sistema.Fora.println(`As datas não são as mesmas`); //imprime porque time1 != tempo2 }

Оцените, пожалуйста статью