Compare datas em Java

Autor: Roger Morrison
Data De Criação: 24 Setembro 2021
Data De Atualização: 1 Julho 2024
Anonim
How to Compare two Dates in Java using compareTo() method
Vídeo: How to Compare two Dates in Java using compareTo() method

Contente

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 para comparar datas. Qualquer método de comparação de duas datas irá basicamente comparar o tempo decorrido de ambas as datas.

Dar um passo

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

  1. Use compareTo. Date implementa ComparableDate> e, portanto, duas datas podem ser comparadas diretamente uma com a outra usando o método compareTo. Se as datas indicarem o mesmo momento no tempo, o método retornará zero. Se a data que está sendo comparada for anterior ao argumento da data, um valor negativo será retornado. Se a data que está sendo comparada for posterior à data do argumento, um valor positivo será retornado. Se as datas forem iguais, um zero será retornado.
  2. Crie os objetos Date. Você terá que criar cada objeto de data antes de começar a compará-los. Uma maneira de fazer isso é aplicar a classe SimpleDateFormat. Isso permite que você insira 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 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

  3. Compare os objetos de data. A seguir mostra cada caso - menor que, igual a e maior que.

      date1.compareTo (date2); // data1 data2, menor que 0 date2.compareTo (data1); // data2> data1, retorna maior que 0 date1.compareTo (data3); // data1 = data3, retorna 0

Método 2 de 4: usando os métodos "igual, depois e antes"

  1. Use igual, depois e antes. As datas podem ser comparadas entre si usando os métodos equals, after e before. Se duas datas indicam a mesma hora, o método equals retornará "verdadeiro". Os exemplos usam as datas criadas anteriormente por meio do método compareTo.
  2. Compare usando o método before. O código abaixo mostra um caso de verdadeiro e falso. Se data1 for anterior a data2, o resultado será verdadeiro. Caso contrário, o before retorna false.

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

  3. Compare isso com o método depois. O código abaixo mostra um caso de verdadeiro e falso. Se data2 for posterior a data1, depois retornará verdadeiro. Caso contrário, o after retorna false.

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

  4. Compare usando o método de igualdade. O código abaixo mostra um caso de verdadeiro e falso. Se as datas forem iguais, igual a retorna verdadeiro. Caso contrário, igual retorna falso.

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

Método 3 de 4: usando a classe Calendar

  1. Use a classe Agenda. A classe Calendar também tem os métodos compareTo, equals, after e before, que funcionam da mesma maneira descrita acima para a classe date. Portanto, se os dados da data forem mantidos em um calendário, não há necessidade de extrair "data", apenas para comparar duas datas.
  2. Crie uma instância do Calendário. Para usar os métodos do Calendário, você precisa de algumas instâncias do Calendário. Felizmente, você pode usar a hora conforme gerada pelas instâncias de Date.

      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);

  3. Compare cal1 e cal2 usando before. O código abaixo retorna verdadeiro porque cal1 é anterior a cal2.

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

  4. Compare cal1 e cal2 usando after. O código abaixo retorna falso, porque cal1 é anterior a cal2.

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

  5. Compare cal1 e cal2 usando iguais. O código a seguir mostra um exemplo de verdadeiro e falso. A condição depende das instâncias do Calendar que estão sendo comparadas. O código abaixo retorna "verdadeiro" e depois "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 o método "getTime"

  1. Use getTime. Também é possível comparar diretamente dois pontos no tempo, embora qualquer uma das abordagens anteriores provavelmente produza resultados mais legíveis e, portanto, seja a preferida. Esta é uma comparação de dois tipos de dados primitivos, portanto, pode ser feita com "", ">" e "==".
  2. Crie os objetos de "longo" tempo. Antes de comparar datas, você deve 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ê.

      longo tempo1 = getTime (data1); // declara o tempo1 primitivo de data1 longo tempo2 = getTime (data2); // declara a hora2 primitiva da data2

  3. Use uma equação "menor que". Use um símbolo "menor que" () para comparar esses dois valores inteiros. Como o tempo1 é menor que o tempo2, a primeira mensagem deve ser impressa na tela. A instrução else é incluída para a sintaxe correta.

      if (time1 time2) {System.out.println ("data1 é anterior a data2"); // imprime porque time1 time2} else {System.out.println ("data1 é posterior ou igual a data2"); }

  4. Faça uma comparação "maior que". Use o símbolo "maior que" (>) para comparar esses dois inteiros. Como o tempo1 é maior que o tempo2, a primeira mensagem é impressa na tela. A instrução else está incluída para a sintaxe correta.

      if (hora2> hora1) {System.out.println ("a data2 vem depois da data1"); // imprime porque hora2> hora1} else {System.out.println ("data2 é anterior ou igual a data1"); }

  5. Faça uma comparação "igual a". Use o símbolo (==) para comparar esses dois inteiros. Visto que time1 é igual a time3, a primeira mensagem deve ser impressa. Se o programa chegar à instrução else, isso significa que os horários não são os mesmos.

      if (time1 == time2) {System.out.println ("As datas são iguais"); } else {System.out.println ("As datas não são iguais"); // imprime porque time1! = time2}