Estou tentando comparar duas datas, uma a data de hoje e outra uma data qualquer. Fiz um codigo pegando alguma coisa na net mas nem sempre da certo. Alguem poderia tentar acertar o codigo ou me passar uma outra maneira de fazer
Calendardataatual=newGregorianCalendar();Stringd="20091019";SimpleDateFormatformdata=newSimpleDateFormat("yyyyMMdd");Stringdataatual2=formdata.format(dataatual.getTime());java.util.Datedata;java.util.Datedata2;try{data=(formdata.parse(d));Calendarvencimento=newGregorianCalendar();vencimento.setTime(data);data2=(formdata.parse(dataatual2));Calendarhoje=newGregorianCalendar();hoje.setTime(data2);// Get difference in millisecondslongdifMillis=vencimento.getTimeInMillis()-hoje.getTimeInMillis();// Dif. em segundoslongdifSeg=difMillis/(1000);// Dif. em minutoslongdifMin=difMillis/(60*1000);// Dif. em horaslongdifHor=difMillis/(60*60*1000);// Dif. em diaslongdifDia=difMillis/(24*60*60*1000);JOptionPane.showMessageDialog(null,difDia);}catch(ParseExceptionex){Logger.getLogger(ContasReceber.class.getName()).log(Level.SEVERE,null,ex);}
Bem, preciso pegar a data do dia e uma data de vencimento, então ver se ja venceu, se venceu quantos dias faz que venceu e então vou calcular os juros
R
rpassos81
Acertei, o problema estava na divisão que quando não dava exata ficava com um dia a menos. Agora ficou assim e a principio esta funcionando
Calendardataatual=newGregorianCalendar();Stringd="20090901";SimpleDateFormatformdata=newSimpleDateFormat("yyyyMMdd");Stringdataatual2=formdata.format(dataatual.getTime());java.util.Datedata;java.util.Datedata2;try{data=(formdata.parse(d));Calendarvencimento=newGregorianCalendar();vencimento.setTime(data);data2=(formdata.parse(dataatual2));Calendarhoje=newGregorianCalendar();hoje.setTime(data2);// Get difference in millisecondslongdifMillis=vencimento.getTimeInMillis()-hoje.getTimeInMillis();// Dif. em segundoslongdifSeg=difMillis/(1000);// Dif. em minutoslongdifMin=difMillis/(60*1000);// Dif. em horaslongdifHor=difMillis/(60*60*1000);longteste1=difHor%24;// Dif. em diaslongdifDia=difMillis/(24*60*60*1000);longteste=0;if(teste1>0){teste=difDia+1;}else{teste=difDia;}JOptionPane.showMessageDialog(null,teste);}catch(ParseExceptionex){Logger.getLogger(ContasReceber.class.getName()).log(Level.SEVERE,null,ex);}
B
Bruno_Laturner
Parece que para ser programador Java, a pessoa tem que ser masoquista também. Nunca vi gostar de sofrer tanto.
Dê uma olhada nisto:
importjavax.swing.JOptionPane;importorg.joda.time.DateTime;importorg.joda.time.Days;importorg.joda.time.format.DateTimeFormat;importorg.joda.time.format.DateTimeFormatter;publicclassCalculaPeriodo{publicstaticvoidmain(String[]args){DateTimeFormatterfmt=DateTimeFormat.forPattern("ddMMyyyy");Strings=JOptionPane.showInputDialog("Digita a data no formato ddMMyyyy");DateTimevencimento=fmt.parseDateTime(s);DateTimeagora=newDateTime();Daysdias=Days.daysBetween(vencimento,agora);Stringmensagem="Já se passaram "+dias+" desde "+vencimento;JOptionPane.showMessageDialog(null,mensagem);}}
Bem ainda não consegui chegar em um bom nivel de programação mas estou tentando. Com relação ao codigo que voce me passou não deu certo, nem os imports funcionou
fjvasconcellos
Boa noite.
Bruno Laturner, boa API para se trabalhar com Datas, não sabia desta não…
Vlw cara…
pedroroxd
rpassos81:
Bem ainda não consegui chegar em um bom nivel de programação mas estou tentando. Com relação ao codigo que voce me passou não deu certo, nem os imports funcionou
Isso se dá ao fato da sua classe provavelmente não chamar CalculaPeriodo como a dele.
Clique no projeto, crie uma nova classe, e de o nome dela de CalculaPeriodo.
Pegue o código dele, de ctrlc e ctrl v e mande rodar.
A API utilizada por ele é muito boa, e seria um jeito mais fácil de fazer…
O seu jeito não está errado… Aliás, não existe jeito certo… O jeito certo é o que você sabe fazer 8)