Tenho uma tarefa a realizar e preciso de ajuda: Tenho uma aplicação em Java que deve receber uma data de nascimento (jtfEntrada) e retornar a quantidade de dias entre a data inserida e a data atual.
Como faço pra quando clicar no botão ‘calcular’ a resposta aparecer em jtfSaida?
Parece que só falta isso.
packagejavaapplication;importjava.text.SimpleDateFormat;publicclassJavaApplication{publicstaticvoidmain(String[]args){try{SimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");java.sql.DatedataEntrada=newjava.sql.Date(format.parse("01/03/2013").getTime());java.sql.DatedataAtual=newjava.sql.Date(System.currentTimeMillis());longdias=((((dataAtual.getTime()-dataEntrada.getTime())/1000)/60)/60)/24;javax.swing.JOptionPane.showMessageDialog(null,"Diferença de dias entre as datas: "+dias);}catch(Exceptione){javax.swing.JOptionPane.showMessageDialog(null,e);}}}
R
rui.a
Amigão, estou tentando usando o seguinte código:
{//inicio do bloco 01intdp,mp,ap;dp=Integer.parseInt(jtfEntrada.getText().substring(0,2));mp=Integer.parseInt(jtfEntrada.getText().substring(3,5));ap=Integer.parseInt(jtfEntrada.getText().substring(6,10));DatadataPassada=newData();dataPassada.setData(dp,mp,ap);//fim do bloco 01//inicio do bloco 02 intda,ma,aa;da=Integer.parseInt(jtfEntrada.getText().substring(0,2));ma=Integer.parseInt(jtfEntrada.getText().substring(3,5));aa=Integer.parseInt(jtfEntrada.getText().substring(6,10));DatadataAtual=newData();dataPassada.setData(da,ma,aa);//fim do bloco 02intdiasVividos=dataPassada.diferencaEntre(dataAtual);res+=diasVividos;jtfSaida.setText(" "+diasVividos);}
Mas, como pode ver, a data atual(bloco 02) está recebendo o mesmo valor da data passada(bloco 01), daí o resultado é sempre zero. Como mudo o código para a data atual ser capturada automaticamente?
D
diego.psw
rui.a:
Amigão, estou tentando usando o seguinte código:
{//inicio do bloco 01intdp,mp,ap;dp=Integer.parseInt(jtfEntrada.getText().substring(0,2));mp=Integer.parseInt(jtfEntrada.getText().substring(3,5));ap=Integer.parseInt(jtfEntrada.getText().substring(6,10));DatadataPassada=newData();dataPassada.setData(dp,mp,ap);//fim do bloco 01//inicio do bloco 02 intda,ma,aa;da=Integer.parseInt(jtfEntrada.getText().substring(0,2));ma=Integer.parseInt(jtfEntrada.getText().substring(3,5));aa=Integer.parseInt(jtfEntrada.getText().substring(6,10));DatadataAtual=newData();dataPassada.setData(da,ma,aa);//fim do bloco 02intdiasVividos=dataPassada.diferencaEntre(dataAtual);res+=diasVividos;jtfSaida.setText(" "+diasVividos);}
Mas, como pode ver, a data atual(bloco 02) está recebendo o mesmo valor da data passada(bloco 01), daí o resultado é sempre zero. Como mudo o código para a data atual ser capturada automaticamente?
Pode reparar no código que mostrei para vc a função
System.currentTimeMillis()
retorna o tempo atual que pode ser convertido em data atual.
Preste atenção se está certo no bloco 2
//inicio do bloco 02 intda,ma,aa;da=Integer.parseInt(jtfEntrada.getText().substring(0,2));ma=Integer.parseInt(jtfEntrada.getText().substring(3,5));aa=Integer.parseInt(jtfEntrada.getText().substring(6,10));DatadataAtual=newData();//AquidataPassada.setData(da,ma,aa);//ou Aqui//fim do bloco 02