4 maneiras de comparar duas datas em Java

Índice:

4 maneiras de comparar duas datas em Java
4 maneiras de comparar duas datas em Java

Vídeo: 4 maneiras de comparar duas datas em Java

Vídeo: 4 maneiras de comparar duas datas em Java
Vídeo: Alinhar Objetos no Inkscape 2024, Abril
Anonim

Existem várias maneiras de comparar datas Java. Internamente, uma data é representada como um ponto (longo) no tempo - o número de milissegundos decorridos desde 1º de janeiro de 1970. Em Java, Date é um objeto, o que significa que inclui vários métodos de comparação. Qualquer método de comparação de duas datas irá essencialmente comparar os horários das datas.

Passos

Método 1 de 4: usando compareTo

4301351 1
4301351 1

Etapa 1. Use compareTo

Date implementa Comparable e, portanto, duas datas podem ser comparadas diretamente com o método compareTo. Se as datas forem para o mesmo ponto no tempo, o método retornará zero. Se a data que está sendo comparada for anterior ao argumento da data, um valor menor que zero será retornado. Se a data que está sendo comparada for posterior ao argumento de data, um valor maior que zero será retornado. Se as datas forem iguais, o valor 0 será retornado.

4301351 2
4301351 2

Etapa 2. Crie os objetos de data

Você precisará criar cada objeto de data antes de começar a compará-los. Uma maneira de fazer isso é usar a classe SimpleDateFormat. Ele permite a entrada fácil de valores de data em objetos de data.

    SimpleDateFormat sdf = new SimpleDateFormat ("aaaa-MM-dd"); // Para declarar valores em novos objetos de data. use o mesmo formato de data ao criar datas Date date1 = sdf.parse ("1995-02-23"); // data1 é 23 de fevereiro de 1995 Data date2 = sdf.parse ("2001-10-31"); // data2 é 31 de outubro de 2001 Data date3 = sdf.parse ("1995-02-23"); // data 3 é 23 de fevereiro de 1995

4301351 3
4301351 3

Etapa 3. Compare os objetos de data

O código abaixo mostrará cada caso - menor que, igual e maior que.

    date1.compareTo (date2); // data1 <data2, retorna menos que 0 date2.compareTo (data1); // data2> data1, retorna maior que 0 date1.compareTo (data3); // data1 = data3, então imprimirá 0 no console

Método 2 de 4: usando igual, depois e antes

4301351 4
4301351 4

Etapa 1. Use igual, antes e depois

As datas podem ser comparadas com os métodos igual, posterior e anterior. Se duas datas forem para o mesmo ponto no tempo, o método equals retornará verdadeiro. Os exemplos usarão datas criadas anteriormente a partir do método compareTo.

4301351 5
4301351 5

Etapa 2. Compare usando o método anterior

O código abaixo mostra um caso verdadeiro e falso. Se data1 for anterior a data2, antes de retornará verdadeiro. Se não for, o before retorna false.

    System.out.print (date1.before (date2)); // imprime true System.out.print (date2.before (date2)); // imprime falso

4301351 6
4301351 6

Etapa 3. Compare usando o método depois

O código abaixo mostra um caso verdadeiro e falso. Se data2 for posterior a data1, after retornará verdadeiro. Se não for, o after retorna false.

    System.out.print (date2.after (date1)); // imprime true System.out.print (date1.after (date2)); // imprime false

4301351 7
4301351 7

Etapa 4. Compare usando o método de igualdade

O código abaixo mostra um caso verdadeiro e falso. Se as datas forem iguais, igual retorna verdadeiro. Se não forem, igual retorna falso.

    System.out.print (date1.equals (date3)); // imprime true System.out.print (date1.equals (date2)); // imprime false

Método 3 de 4: usando a classe Calendar

4301351 8
4301351 8

Etapa 1. Use o calendário

A classe calendar também possui métodos compareTo, equals, after e before que funcionam da mesma maneira que a descrita acima para a classe date. Portanto, se a informação de data estiver em um calendário, não há necessidade de extrair a data apenas para fazer uma comparação.

4301351 9
4301351 9

Etapa 2. Crie instâncias do Calendário

Para usar os métodos do Calendário, você precisará de algumas instâncias do Calendário. Felizmente, você pode simplesmente obter os tempos das instâncias de Date já criadas.

    Calendário cal1 = Calendar.getInstance (); // declara cal1 Calendar cal2 = Calendar.getInstance (); // declara cal2 Calendar cal3 = Calendar.getInstance (); // declara cal3 cal1.setTime (date1); // aplica a data a cal1 cal2.setTime (date2); cal3.setTime (date3);

4301351 10
4301351 10

Etapa 3. Compare cal1 e cal2 usando antes

O código a seguir deve imprimir true, pois cal1 é anterior a cal2.

    System.out.print (cal1.before (cal2)); // imprimirá verdadeiro

4301351 11
4301351 11

Etapa 4. Compare cal1 e cal2 usando after

O código a seguir deve imprimir falso, pois cal1 é anterior a cal2.

    System.out.print (cal1.after (cal2)); // imprime falso

4301351 12
4301351 12

Etapa 5. Compare cal1 e cal2 usando iguais

O código a seguir mostrará um exemplo de caso verdadeiro e falso. A condição depende das instâncias de calendário que estão sendo comparadas. O código deve imprimir "verdadeiro" e "falso" na próxima linha.

    System.out.println (cal1.equals (cal3)); // imprime verdadeiro: cal1 == cal3 System.out.print (cal1.equals (cal2)); // imprime falso: cal1! = cal2

Método 4 de 4: usando getTime

4301351 13
4301351 13

Etapa 1. Use getTime

Também é possível comparar diretamente o ponto no tempo de duas datas, embora qualquer uma das abordagens anteriores provavelmente seja mais legível e, portanto, preferível. Esta será uma comparação de dois tipos de dados primitivos, portanto, pode ser feita com "" e "==".

4301351 14
4301351 14

Etapa 2. Crie os objetos de longa duração

Antes de comparar as datas, você deve criar inteiros longos com os dados dos objetos Date criados anteriormente. Felizmente, o método getTime () fará a maior parte do trabalho para você.

    longo tempo1 = getTime (data1); // declara o tempo1 primitivo de data1 longo tempo2 = getTime (data2); // declara o tempo2 primitivo de data2

4301351 15
4301351 15

Etapa 3. Faça uma comparação inferior

Use o símbolo de menor que (<) para comparar esses dois valores inteiros. Como o tempo1 é menor que o tempo 2, a primeira mensagem deve ser impressa. A instrução else está incluída para uma sintaxe adequada.

    if (hora1 <hora2) {System.out.println ("data1 é anterior à data2"); // será impresso desde hora1 <hora2} else {System.out.println ("a data1 não é anterior à data2"); }

4301351 16
4301351 16

Etapa 4. Faça uma comparação maior do que

Use o símbolo maior que (>) para comparar esses dois valores inteiros. Como o tempo1 é maior que o tempo 2, a primeira mensagem deve ser impressa. A instrução else está incluída para uma sintaxe adequada.

    if (time2> time1) {System.out.println ("date2 is after date1"); // imprimirá desde hora2> hora1} else {System.out.println ("a data2 não é posterior à data1"); }

4301351 17
4301351 17

Etapa 5. Faça uma comparação de igual

Use o símbolo para verificar a igualdade (==) para comparar a igualdade desses dois valores inteiros. Como time1 é igual a time3, a primeira mensagem deve ser impressa. Se o programa chegar à instrução else, isso significa que os tempos não são iguais.

    if (time1 == time2) {System.out.println ("as datas são iguais"); } else {System.out.println ("as datas não são iguais"); // imprimirá desde time1! = time2}

Recomendado: