Foro de elhacker.net

Programación => Java => Mensaje iniciado por: gibi77 en 30 Septiembre 2011, 21:13 pm



Título: ayuda con estod dos programas
Publicado por: gibi77 en 30 Septiembre 2011, 21:13 pm
lo que pasa es que tengo que hacer un algoritmo que me determine los dias transcurridos entre ua fecha dada y la actual. hice un codigo pero no me funciona muy bien... quisiera que me ayudaran con el.

y tambien tengo que hacer un programa que aceepte un mnumero de dias, mes y año y los visualice en formato dd/mm/aa. alguien me puede ayudar?? de antemano gracias!!!

Código
  1. void transcurrido(){
  2.        int año=Integer.parseInt(JOptionPane.showInputDialog("Dame el año a partir del cual quieres calcular\nejem: 2000"));
  3.        int mes=Integer.parseInt(JOptionPane.showInputDialog("Dame el mes a partir del cual quieres calcular"));
  4.        int dia=Integer.parseInt(JOptionPane.showInputDialog("Dame el dia a partir del cual quieres calcular"));
  5.        GregorianCalendar gc = new GregorianCalendar(año, mes, dia);
  6.        int añoac=Integer.parseInt(JOptionPane.showInputDialog("hasta que año quieres calcular?\nejem: 2000"));
  7.        int mesac=Integer.parseInt(JOptionPane.showInputDialog("hasta que mes quieres calcular?"));
  8.        int diaac=Integer.parseInt(JOptionPane.showInputDialog("hasta que dia quieres calcular?"));
  9.        GregorianCalendar gc1 = new GregorianCalendar(añoac, mesac, diaac);
  10.        Date fec1 = gc.getTime();
  11.        Date fec2 = gc1.getTime();
  12.        long time = fec2.getTime() - fec1.getTime();
  13.        JOptionPane.showMessageDialog(null,"han transcurrido: "+ time/(3600*24*1000)+" dias");


Título: Re: ayuda con estod dos programas
Publicado por: Valkyr en 1 Octubre 2011, 12:51 pm
Yo lo que haría sería coger y leer una fecha, al leerla comprobar que los datos introducidos son correctos, ya que, por ejemplo, no tiene sentido que introduzcan un mes 13 o un día 38, al igual con los años  que no pueden ser negativos.

Una vez que los has leido haces la diferencia y punto. Lo que has propuesto lo he ejecutado y funciona correctamente, lo único que yo haría sería devolver el valor absoluto, de esta forma no te importaría que te diesen en primer lugar una fecha futura y en segundo lugar una fecha actual.

Por otro lado el método getTime() devuelve el número de milisegundos transcurridos desde 1970, por lo tanto una fecha anterior a esta nos devolvería un valor negativo.

Lo de visualizar no se a que te refieres exactamente.

Saludos.