28 de mar. de 2007

Datas em Java - Ainda existe dúvida ?

Esse post está Deprcated! hehehe..

Tenho visto pelos fóruns e listas da vida muitas dúvidas quanto a datas em java, isso me motivou a este post.
A própria JDK já vem com ferramentas para realizar trabalhos simples com datas.
Já ouviu falar na classe Calendar ??
Classe calendar oferece algumas operações básicas com datas.

1º) Desmembrar data
Você já deve ter visto que métods da classe java.utill.Date como: getHour() , getMonth() , getYear() e muitos outros estão
Deprecated.
Que faz esse trabalho é a classe java.util.Calendar.
Pra não esquecer sempre que você cria um objeto java.util.Date ele pega por padrão a data e hora atual da máquina. A mesma coisa acontece quando se cria uma instancia de Calendar. Continuando...
Abaixo vai um exemplo de código que pega dia, mês, ano, minutos e segundos da data atual.

public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();

int dia = calendar.get(Calendar.DATE);
int mes = calendar.get(Calendar.MONTH);
int ano = calendar.get(Calendar.YEAR);

System.out.println("Dia: " + dia);
System.out.println("Mês: " + mes);
System.out.println("Ano: " + ano);
}

Atenção: o mês inicia com zero, ou seja, Janeiro = 0, fevereiro = 1, etc...
2º) Acrescentar e remover dias, mes, anos, horas, minutos...
Através do método add(), você pode acrescentar ou remover datas.
Mas como?? não existe o método remove()!!!
Para remover é só passar o int negativo, conforme exemplos:

public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.add( Calendar.DAY_OF_MONTH , 5); //adicionar 5 dias do mês
calendar.add( Calendar.HOUR , -2);//diminuir 2 horas
calendar.add( Calendar.YEAR, -18); //diminuir 18 anos

int dia = calendar.get(Calendar.DATE);
int mes = calendar.get(Calendar.MONTH);
int ano = calendar.get(Calendar.YEAR);

System.out.println("Dia: " + dia);
System.out.println("Mês: " + mes);
System.out.println("Ano: " + ano);
}

3º) Comparar datas
Outra possibilidade é saber se uma data é maior ou menor que outra.
Para isto existe o método comparTo().
Exemplo:
public static void main(String[] args) {

//eu
java.util.Date dataAtual = new java.util.Date();

java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.add(Calendar.YEAR , -18);

// ele
java.util.Date data18AnosAtras= calendar.getTime();

int result = dataAtual.compareTo( data18AnosAtras );

System.out.println(result);

}


O que eu fiz?!
Criei uma data atual com new Date(). Após removi 18 anos (
calendar.add(Calendar.YEAR , -18) ) e peguei outra data.
Depois chamei o métod compareTo() para saber se o objeto
data18AnosAtras era maior ou mernor que dataAtual.
O resultado no console foi 1. (?????)

Veja que chamei a data atual de EU e a outra data de ELE. Isso é para facilitar o entendimento.
O que o métod compareTo() faz?? ele faz a seguinte pergunta:

Eu sou maior ou menor que ele ?
Resposta: 1

-1 = "eu sou menorl"
0 = "eu sou igual"
1 = "eu sou maior"

Era isso...
Espero ter tirado algumas dúvidas.

LEMBRANDO: CRÍTICAS SEMPRE SÃO BEM VINDAS!!!

Abraço!

5 comentários:

Alê disse...

Parabens excelente post!

Os iniciantes ainda sente muita dificuldade para comparar datas.

Enquanto o metodo compareTo() resolve todos os problemas...

Alê disse...

Parabens pelo post!!!
Added Nos favoritos!

Unknown disse...

Muito bom, só achei as letras muito miúdas...

Anônimo disse...

Gostei do seu post sobre datas em java, muito bom!

Até postei no meu blog: http://www.programadoras.com.br/?p=155

Abraços, Melissa

ORTIZ disse...

Bah! Baita post...me salvou no final da sprint hehehe
tava complicado de comparar essas datas corretamente hehe

Valeu Simundi, abraço!