Baixe em PDF
Baixe em PDF
Existem várias formas de comparar datas usando Java. Internamente, na linguagem, uma data é representada como um ponto no tempo usando uma variável long . Nela, é guardada a quantidade de milissegundos que passaram desde o dia primeiro de janeiro de 1970. No Java, existe a classe Date (data), que contém vários métodos que ajudam a realizar comparações. Qualquer método de comparação vai basicamente comparar os tempos guardados em dois objetos Date.
Passos
-
Use o método compareTo. A classe Date implementa a interface Comparable<Date>, logo, duas datas podem ser comparadas usando o método compareTo. Se as datas forem iguais, o método retornará zero. Se a data que está sendo comparada for anterior à data passada como argumento, um valor menor que zero será retornado. Se o contrário acontecer, o valor retornado será maior que zero. [1] X Fonte de pesquisa
-
Crie os objetos de data. Você precisará criar um objeto para cada data antes de compará-las. Um jeito de fazer isso é usar a classe SimpleDateFormat . Ela permite que você transforme facilmente uma data em um objeto de data.
SimpleDateFormat sdf = new SimpleDateFormat ( "dd-MM-yyyy" ); //Definindo o formato de declaração de novos objetos de data. Use o mesmo formato ao declarar novas datas Date data1 = sdf . parse ( "23-02-1995" ); //data1 é 23 de fevereiro de 1995 Date data2 = sdf . parse ( "31-10-2001" ); //data2 é 31 de outubro de 2001 Date data3 = sdf . parse ( "23-02-1995" ); //data3 é 23 de fevereiro de 1995
-
Compare os objetos de data. O código abaixo vai demonstrar cada caso, onde datas iguais, menores e maiores são passadas como argumento.
data1 . compareTo ( date2 ); //data1 < data2, retorna um valor menor que 0 data2 . compareTo ( date1 ); //data2 > data1, retorna um valor maior que 0 data1 . compareTo ( date3 ); //data1 = data3, então um 0 será mostrado no console
Publicidade
-
Use os métodos equals, after e before (igual a, depois de e antes de, respectivamente). Você pode usar estes métodos para ajudar a comparar as datas. Se duas datas se referirem ao mesmo ponto no tempo, o método equals retornará verdadeiro. Os exemplos abaixo vão usar as datas que já criamos quando demonstramos o método compareTo. [2] X Fonte de pesquisa
-
Comparando usando o método before. O código abaixo mostra um caso que retorna verdadeiro e um que retorna falso. Se a data1 for anterior à data2, o before retorna true (verdadeiro). Caso contrário, ele retorna false (falso).
System . out . print ( data1 . before ( data2 )); //escreve true System . out . print ( data2 . before ( data2 )); //escreve false
-
Comparando usando o método after. O código abaixo mostra um caso que retorna verdadeiro e um que retorna falso. Se a data2 for posterior à data1, ele retorna true. Caso contrário, ele retorna false.
System . out . print ( data2 . after ( data1 )); //escreve true System . out . print ( data1 . after ( data2 )); //escreve false
-
Comparando usando o método equals. O código abaixo mostra um caso que retorna verdadeiro e um que retorna falso. Se as datas forem iguais, o método equals retornará verdadeiro. Caso contrário, ele retornará falso.
System . out . print ( data1 . equals ( data3 )); //escreve true System . out . print ( data1 . equals ( data2 )); //escreve false
Publicidade
-
Use o calendário. A classe Calendar também tem os métodos compareTo, equals, after e before, e eles funcionam da mesma maneira que descrevemos acima na classe date. Como a informação de uma data é guardada no calendário, não há necessidade de extrair a data para fazer a comparação. [3] X Fonte de pesquisa
-
Crie instâncias de objetos Calendar. Para usar os métodos da classe Calendar, será necessário instanciar objetos desta classe. A boa notícia é que você pode extrair a data de instâncias Date criadas previamente.
Calendar cal1 = Calendar . getInstance (); //declara cal1 Calendar cal2 = Calendar . getInstance (); //declara cal2 Calendar cal3 = Calendar . getInstance (); //declara cal3 cal1 . setTime ( data1 ); //aplica a data ao cal1 cal2 . setTime ( data2 ); cal3 . setTime ( date3 );
-
Compare cal1 e cal2 usando o before. O código abaixo deve retornar true, pois cal1 é anterior a cal2.
System . out . print ( cal1 . before ( cal2 )); //retorna true
-
Compare cal1 e cal2 usando o after. O código abaixo deve retornar false, pois cal2 é anterior a cal1.
System . out . print ( cal1 . after ( cal2 )); //retorna false
-
Compare cal1 e cal2 usando o equals. O código abaixo demonstra um exemplo de um caso verdadeiro e de um caso falso. O que define a resposta são as duas instâncias da classe Calendar usadas na comparação. O código deve retornar "true" e depois "false" na linha seguinte.
System . out . println ( cal1 . equals ( cal3 )); //retorna true: cal1 == cal3 System . out . print ( cal1 . equals ( cal2 )); //retorna false: cal1 != cal2
Publicidade
-
Também é possível usar o getTime para comparar o horário de duas datas. Entretanto, as abordagens que mostramos anteriormente são mais simples, por isso, dê preferência a elas. Esta será uma comparação de dois tipos primitivos de dados em java, por isso, ela pode ser feita usando os operadores "<", ">" e "==".
-
Criando objetos long para representar tempo. Antes de comparar as datas, crie inteiros long e atribua a eles os objetos Date que criamos anteriormente. Por sorte, o método getTime() fará todo o trabalho para você.
long time1 = getTime ( data1 ); //declara o tipo primitivo time1 a partir de data1 long time2 = getTime ( data2 ); //declara o tipo primitivo time2 a partir de data2
-
Faça uma comparação “menor que”. Para isso, use o símbolo “<” ao comparar dois inteiros. Como time1 é menor que time2, a primeira mensagem deve ser exibida. O else foi incluído apenas por questão de sintaxe.
if ( time1 < time2 ){ System . out . println ( "data1 é anterior a data2" ); //aparecerá na tela, pois time1 < time2 } else { System . out . println ( "data1 não é anterior a data2" ); }
-
Faça uma comparação “maior que”. Para isso, use o símbolo “>” ao comparar os dois inteiros. Como time1 é maior que time2, a primeira mensagem deve aparecer na tela. O else foi incluído apenas por questão de sintaxe.
if ( time2 > time1 ){ System . out . println ( "date2 é posterior a date1" ); //será mostrado, pois time2 > time1 } else { System . out . println ( "date2 não é posterior a date1" ); }
-
Faça um teste de igualdade. Use o símbolo “==” para testar a igualdade ao comparar dois inteiros. Como time1 é igual a time3, a primeira mensagem deve aparecer na tela. Se o programa chegar ao else, significa que as datas não são iguais. [4] X Fonte de pesquisa
if ( time1 == time2 ){ System . out . println ( "as datas são iguais" ); } else { System . out . println ( "as datas não são iguais" ); //aparecerá na tela, pois time1 != time2 }
Publicidade
Referências
Sobre este guia wikiHow
Esta página foi acessada 42 302 vezes.
Publicidade