Problema para manipular data!

5 respostas
Diego_Adriano

Bom galera, meu problema é o seguinte, preciso pegar o mês que se refere certa data, então fiz um teste para ver como se comporta o Date e o Calendar, bem, reparei que cada um tem um tipo de saida de dados, não entendi muito bem, e tb achei estranho na saida do mês, pois parece que ele sai sempre com 1 à menos, tipo … Se eu passar o dia de hj teria que exibir “2” porém exibe 1.

System.out.println("Dia: "+date.getDay());
System.out.println("Mes: "+date.getMonth());
System.out.println("Ano: "+date.getYear());

System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@");

Calendar calendar = Calendar.getInstance();
System.out.println("Dia/"+calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("Mês/"+calendar.get(Calendar.MONTH));
System.out.println("Ano/"+calendar.get(Calendar.YEAR));

E no console exibe dessa forma:

Dia: 4
Mes: 1
Ano: 112
@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dia/2
Mês/1
Ano/2012

5 Respostas

pmlm

http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#MONTH

Diego_Adriano
Qual o pq disso ?
public void mes(Date data){
Calendar calendar = Calendar.getInstance();
calendar.setTime(data);
		
System.out.println("DIA/ "+ calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("MES/ "+ calendar.get(Calendar.MONTH));
System.out.println("ANO/ "+ calendar.get(Calendar.YEAR));
}

public static void main(String[] args) throws ParseException {

Teste teste = new Teste();
teste.mes(new Date("12/31/2012"));//TIVE QUE TROCAR O DIA NO LUGAR DO MES
}
Imprimir isso ?
DIA/ 31
MES/ 11
ANO/ 2012
Bruno_Cunha

No java.util.Calendar, o mês começa a contar a partir do 0.

0 = Janeiro
1 = Fevereiro
11 = Dezembro

Diego_Adriano

Eu vi sobre esse lance de Janeiro começar em 0 … o que eu não entendo é pq eu tenho que passar a posição do mês invertida com a data … eu deveria passar assim: new Date("31/12/2012") Mas tenho que passar assim: new Date("12/31/2012")

pmlm

Porque o teu sistema deve ter a data definida dessa forma.

Além de que não deves usar esse constructor, como diz a própria documentação

Deves usar:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("31/12/2012");

Assim, defines tu o formato da data e não tens problema em tentar adivinhar qual o formato que deves ter.

Criado 2 de fevereiro de 2012
Ultima resposta 3 de fev. de 2012
Respostas 5
Participantes 3