Confusão com objeto da classe Date

4 respostas
red_moskito

Olá pessoALL,

Estou tendo problemas ao instanciar um novo objeto da classe Date.

Veja:

Date data = new Date(83,3,2); 

// instanciado novo objeto da classe Date com a data 02/03/1983


DateFormat formataData = DateFormat.getDateInstance(DateFormat.DEFAULT, new Locale("pt","BR");

// formatador da data

Ao meu ver, a linha:

System.out.println(formataData.format(data));

deveria retornar a saída:

02/03/1983

mas não sei por que cargas d'água retorna:

02/04/1983

Alguém sabe me explicar porque o objeto é instanciado com mês de ABRIL se eu forneci mês 3 no construtor?

4 Respostas

pcalcado

vamos olhar o JavaDoc.

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html

Deprecated? Não use.

Caso insista em usar veja que meses começam em zero.

O que você precisa é java.util.Calendar.

red_moskito

pcalcado:
vamos olhar o JavaDoc.

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html

Deprecated? Não use.

Caso insista em usar veja que meses começam em zero.

O que você precisa é java.util.Calendar.

Phillip, eu vi isso. Mas olhando a documentação do Calendar, não compreendi como ele funciona.

Além do mais, mesmo fornecendo o mês com “03”, na hora de retornar, retorna abril. Isso porque o argumento é do tipo int, portanto, tanto faz “3” ou “03”.

Quanto à classe Calendar, dá pra me dar uma breve explicação de como funciona? Ficaria muito grato!

Abraços!

pcalcado

Eu falei que ele começa em 0, não que o algarismo começa em zero :wink:
0=Janeiro
1=Fevereiro

11=Dezembro

E sobre Calendar você vai encontrar mais no fórum do GUJ numa pesquisa que eu conseguiria descrever aqui :wink:

R

Não tem muita dificuldade não:

Calendar cal = Calendar.getInstance( );
Date hoje = new Date( ); // Data e hora corrente
cal.setTime(hoje);
    
dia = cal.get(Calendar.DAY_OF_MONTH);
mes = cal.get(Calendar.MONTH);
ano = cal.get(Calendar.YEAR);

Renato

Criado 8 de agosto de 2005
Ultima resposta 20 de ago. de 2005
Respostas 4
Participantes 3