Olá pessoal do GUJ. Este é meu 1º post. A dúvida é a seguinte: Estou querendo guardar a hora do sistema e uso o Calendar dataActual = Calendar.getInstance();
até aki blz. Depois peço ao usuário que insira os valores para ano, mes e dia. e atribuo na sua data de nascimentodatNasc.set(ano, mes - 1, dia);
Logo aqui se não colocar mes-1, vai dar erro mais à frente, mas seguindo.
Depois quando crio um objeto SimpleDateFormat, para poder converter Date em String SimpleDateFormat s = new SimpleDateFormat("dd/mm/yyyy");
String a = s.format(datNasc.getTime());
System.out.println(a);
A data fica baralhada no mês.
Este método faz parte de uma classe de de Contatos, que deveria poder pegar na data de nascimento de um contato e dizer quantos dias faltam para seu aniversário e se é dia de aniversário. Mas não conseguindo fazer o override do método toString, porque não consegue imprimir Date. então o que estou querendo é: Saber como corrigir o engano ao imprimir o mês e poder fazer a conversão para String, sem o mês aparecer 16 mêses a seguir do que é esperado.
Bom trabalho
abr p o GUJ
[code] public Calendar criaData() {
// Declaração das variaveis e dos calendarios.
int anoActual, anoNasc;
int mesActual, mesNasc;
int diaActual, diaNasc;
Calendar dataActual = Calendar.getInstance();
Calendar datNasc = Calendar.getInstance();
//Atribuindo valores às variaveis.
int ano, mes, dia;
System.out.println("Insira ano");
Scanner sc = new Scanner(System.in);
ano = sc.nextInt();
System.out.println("Insira mes");
mes = sc.nextInt();
System.out.println("Insira dia");
dia = sc.nextInt();
// dataNasc.set(ano, mes - 1, dia, 12, 0);
datNasc.set(ano, mes - 1, dia);
SimpleDateFormat s = new SimpleDateFormat(“dd/mm/yyyy”);
String a = s.format(datNasc.getTime());
System.out.println(a);
anoActual = dataActual.get(Calendar.YEAR);
System.out.println("ano ac " + anoActual);
anoNasc = datNasc.get(Calendar.YEAR);
System.out.println("ano " + anoNasc);
mesActual = dataActual.get(Calendar.MONTH);
System.out.println("mes ac " + (mesActual + 1));
mesNasc = datNasc.get(Calendar.MONTH);
System.out.println("mes " + (datNasc.get(Calendar.MONTH) + 1));
diaActual = dataActual.get(Calendar.DAY_OF_MONTH);
System.out.println("dia ac " + diaActual);
diaNasc = datNasc.get(Calendar.DAY_OF_MONTH);
System.out.println("dia " + diaNasc);
//Impressão
System.out.println("Atual\nAno : " + anoActual + "\tMes: "
+ (mesActual + 1) + "\tDia: " + diaActual);
System.out.println("Nascimento\nAno : " + anoNasc + "\tMes: " + (mesNasc + 1)
+ "\tdia: " + diaNasc);
System.out.println("Idade: " + (anoActual - anoNasc));
// System.out.println("Faltam " + (mesActual - mesNasc) + " meses p niver");
// System.out.println("Faltam " + (diaActual - diaNasc) + " dias p niver");
if ((mesActual == mesNasc) && (diaActual == diaNasc)) {
System.out.println("Hoje é dia de Aniversário");
} else {
System.out.println("Não é dia de Aniversário");
}
return dataNasc;
}[/code]