Classes Date e Calendar

Boa noite pessoa estou com uma duvida tenho um exercicio para faculdade onde estou utilizando a classe date mas em varios metodos da variavel date parece ser obsoleto por isso gostaria de tentar passar para calendar o metodo e o de baixo.

public void setDtNascimento(Date dtNascimento) throws ValidarExecption {
        int dia,mes,ano,diae,mese,anoe;

        diae = dtNascimento.getDate();
        mese = dtNascimento.getMonth();
        anoe = dtNascimento.getYear();

        Date data = new Date();
        
        dia = data.getDate();
        mes = data.getMonth();
        ano = data.getYear();

        if(anoe > ano)
        {   throw  new ValidarExecption("Digite uma data válida!");}
        else if((mese > mes) && (anoe == ano))
        {   throw  new ValidarExecption("Digite uma data válida!");}
        else if ((diae > dia) && (mese == mes) && (anoe == ano))
        {   throw  new ValidarExecption("Digite uma data válida!");}
        this.dtNascimento = dtNascimento;
    }

eu consigo passar ele para a classe calendar? como?

grato pela atenção

public void setDtNascimento(Date dtNascimento) throws ValidarExecption {
int dia,mes,ano,diae,mese,anoe;

diae = dtNascimento.getDate();
mese = dtNascimento.getMonth();
anoe = dtNascimento.getYear();

Date data = new Date();

dia = data.getDate();
mes = data.getMonth();
ano = data.getYear();

if(anoe > ano)
{ throw new ValidarExecption("Digite uma data válida!");}
else if((mese > mes) && (anoe == ano))
{ throw new ValidarExecption("Digite uma data válida!");}
else if ((diae > dia) && (mese == mes) && (anoe == ano))
{ throw new ValidarExecption("Digite uma data válida!");}
this.dtNascimento = dtNascimento;
} 

quando for postar codigo, poste dentro das tags code, fica mais facil de ser visualizado.

vc pode criar um Calendar assim:

Date data = new Date();
Calendar c = Calendar.getInstance();
Locale pt = new Locale("pt", "br"); // se vc quiser um Calendar com um tipo de data especifico, vc pode criar um Locale, nesse caso o Locale usa o português do Brasil
Calendar d = Calendar.getInstance(pt); // cria o calendario assim

c.setTime(data); // aqui vc atribui a data ao Calendar, e a partir daqui vc pode manipular ele
c.add(Calendar.MONTH, 3); // adiciona 3 meses na data atual
c.add(Calendar.YEAR, 2); // adiciona 2 anos na data atual
c.add(Calendar.HOUR, 4); // adiciona 4 horas
c.getTime() // retorna a data

como que eu faço para pegar a data atual?

Date data = new Date(); // aqui vc pega a Data atual, 
System.out.println(data);  // se vc imprimir isso, vai receber alguma coisa parecida com isso Fri May 21 21:23:44 BRT 2010

caso vc queira formatar essa data vc pode fazer isso

Date data = new Date();
DateFormat df = DateFormat.getInstance(); // existem outras formas para formatar a data, vc pode formatar ela para um local especifico
Locale pt = new Locale("pt", "br");
DateFormat df_pt_full = DateFormat.getInstance(DateFormat.FULL, pt);
DateFormat df_pt_short = DateFormat.getInstance(DateFormat.SHORT, pt);
DateFormat df_pt_medium = DateFormat.getInstance(DateFormat.MEDIUM, pt);
System.out.println(df_pt_full.format(data); // se imprimir vai receber uma data assim: Sexta-feira, 21 de Maio de 2010
System.out.println(df_pt_short.format(data); // se imprimir vai receber uma data assim: 21/05/10
System.out.println(df_pt_medium.format(data); // se imprimir vai receber uma data assim: 21/05/10

mas ai eu n vou estar usando a classe date?

sim, para vc usar a classe Calendar, vc tem que criar um Date, e depois atribuir esse Date para uma Calendar

Date data_atual = new Date();
Calendar c = Calendar.getInstance();
c.setTime(data_atual); // aqui vc passa a data_atual para o Calendar, eai vc vai poder utilizar os metodos da classe Calendar.
System.out.println(c.getTime()); // imprimi a data atual
System.out.println(c.add(Calendar.YEAR, 2)); // adiciona 2 anos a data atual

[quote=leandrognaf]Boa noite pessoa estou com uma duvida tenho um exercicio para faculdade onde estou utilizando a classe date mas em varios metodos da variavel date parece ser obsoleto por isso gostaria de tentar passar para calendar o metodo e o de baixo.

public void setDtNascimento(Date dtNascimento) throws ValidarExecption {
int dia,mes,ano,diae,mese,anoe;

    diae = dtNascimento.getDate();
    mese = dtNascimento.getMonth();
    anoe = dtNascimento.getYear();

    Date data = new Date();
    
    dia = data.getDate();
    mes = data.getMonth();
    ano = data.getYear();

    if(anoe > ano)
    {   throw  new ValidarExecption("Digite uma data válida!");}
    else if((mese > mes) && (anoe == ano))
    {   throw  new ValidarExecption("Digite uma data válida!");}
    else if ((diae > dia) && (mese == mes) && (anoe == ano))
    {   throw  new ValidarExecption("Digite uma data válida!");}
    this.dtNascimento = dtNascimento;
}

eu consigo passar ele para a classe calendar? como?

grato pela atenção[/quote]

Se vc quer apenas comparar as duas datas e exibir uma data formatada acho que o mais simples é o SimpleDateFormat. Se bem me lembro fica uma coisa assim:

public void setDtNascimento(Date dtNascimento) throws ValidarExecption {
        Date hoje = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

        if(dtNascimento.after(hoje))
            throw  new ValidarExecption("Digite uma data válida!");
        else
        this.dtNascimento = dtNascimento;
 
        System.out.print(sdf.format(dtNascimento);
    }

Acho que isso faz o que vc quer e exibe tb a data formatada.

Boa tarde a todos, tembém faço um trabalho da faculdade em que necessitarei de usar Date. Embora busque, pesquise e (de certa forma) entenda como funciona, não consigo fazê-la funcionar.
Já tentei usar SimpleDateFormat e outros recursos mas não alcanço meu objetivo. Eu quero validar uma data de nascimento (que seja declarada) de um usuário num programa, e como se trata de uma data tenho de validar dia com relação ao mês que pertence e ao ano (se é bissexto ou não). Alguém pode me ajudar a pensar numa forma de resolver este problema da maneira mais simples possível?

Essa é só uma parte do trabalho ಠ_ಠ

Fiz o que eu quero mas esta dando um alerta no netbeans (Acessando estatico fild …) o que siguinifica? segue o codigo

[code] public void setDataNascimento(Calendar dataNascimento) throws ValidarExecption {
int diaPaciente,anoPaciente,diaValida,anoValida;

    Date hoje = new Date();
    Calendar dataAtual = Calendar.getInstance();
    dataAtual.setTime(hoje);

    diaPaciente = dataNascimento.DAY_OF_YEAR;
    anoPaciente = dataNascimento.YEAR;

    diaValida = dataAtual.DAY_OF_YEAR;
    anoValida = dataAtual.YEAR;

    if(anoPaciente > anoValida){
        throw new ValidarExecption("Ano não e Valida");
    }
    else if((diaPaciente > diaValida )&&(anoPaciente == anoValida)){
        throw new ValidarExecption("Dia não e valido"); 
    }
}[/code]