Estou começando agora na linguagem de programação e foi pedido para fazer um sistema em java com a classe calendar para calcular a o Dia,Mes,Ano de vida.
Achei muitas coisas sobre a classe calendar, mas não entendi como trata ele dentro da programação.
Camarada, a Classe Calendar permite que você utilize o método roll(int field, int amount);
isso significa que:
//10 dias atrás
Calendar c = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(df.format(c.getTime()));
c.roll(Calendar.DAY_OF_MONTH, -10);
System.out.println(df.format(c.getTime()));
Como hoje é 14/09…
14/09/2011
04/09/2011
Os fields aceitos vão desde o dia do mês, semana, ano, até mês e ano.
// importar na classe
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.math.BigDecimal;
import java.math.RoundingMode;
// metodo que retorna o intervalo de dias entre duas datas
public String contaDias(String dataInicialBR, String dataFinalBR) throws ParseException {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
Date dataInicio = df.parse(dataInicialBR);
Date dataFim = df.parse(dataFinalBR);
long dt = (dataFim.getTime() - dataInicio.getTime()) + 3600000;
Long diasCorridosAnoLong = (dt / 86400000L);
Integer diasDecorridosInt = Integer.valueOf(diasCorridosAnoLong.toString());
String diasDecorridos = String.valueOf(diasDecorridosInt); //Sem numeros formatados;
return diasDecorridos;
}
// método para pegar a data do dia
public String getDataDiaBr(){
GregorianCalendar calendario = new GregorianCalendar();
int dia = calendario.get(calendario.DAY_OF_MONTH);
int mes = calendario.get(calendario.MONTH) + 1;
int ano = calendario.get(calendario.YEAR);
String dataIguana = String.valueOf(dia + "/" + mes + "/" + ano);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String diaIguana = df.format(new Date());
return diaIguana;
}
// agora para calcular a idade
public static BigDecimal calculaIdade(String dataDoMeuNascimento) throws ParseException{
BigDecimal qtdDias = new BigDecimal(contaDias(dataDoMeuNascimento,getDataDiaBr()));
BigDecimal ano = new BigDecimal(365.25);
BigDecimal idade = qtdDias.divide(ano,0, RoundingMode.DOWN);
return idade;
}
//**** para usar é só chamar o metodo calculaIdade e passar uma String com a data do nascimento
System.out.println(calculaIdade("06/09/1979"));
agora estou estudando bastante para poder ajudar as próximas pessoas que estiver com duvidas \o
package calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class calendar {
public static void main(String[] args) {
//pegando a data do sistema
Calendar cal = GregorianCalendar.getInstance();
int diaAtual = cal.get(Calendar.DAY_OF_MONTH);
int mesAtual = cal.get(Calendar.MONTH) + 1;
int anoAtual = cal.get(Calendar.YEAR);
//recebendo a data de nascimento usuario
Scanner in = new Scanner(System.in);
System.out.println("Dia em que você nasceu: ");
int diaNasc = in.nextInt();
if ((diaNasc<=0) && (diaNasc>31))
{
System.out.println("Dia Invalido");
}
else
{
System.out.println("Mes em que você nasceu: ");
int mesNasc = in.nextInt();
if ((mesNasc<=0) && (mesNasc>12))
{
System.out.println("Mes invalido");
}
else
{
System.out.println("Ano em que você nasceu: ");
int anoNasc = in.nextInt();
if ((anoNasc<=0) && (anoNasc>anoAtual))
{
System.out.println("Ano Invalido");
}
else
{
int Nasc = anoNasc*365;
Nasc = Nasc+(mesNasc*31);
Nasc = Nasc+diaNasc;
int Atual = anoAtual*365;
Atual = Atual+(mesAtual*31);
Atual = Atual+diaAtual;
System.out.println("Você tem "+(Atual-Nasc)+" dias ou "+((Atual-Nasc)/31)+" meses ou "+((Atual-Nasc)/365)+" anos.");
}
}
}
}
}