Foros del Web » Programación para mayores de 30 ;) » Java »

problema diferencia dias entre fechas

Estas en el tema de problema diferencia dias entre fechas en el foro de Java en Foros del Web. Hola a todos, escribi un codigo para calcular la diferencia de dias entre dos fechas, pero me presenta problemas cuando calculo para dos fechas en ...
  #1 (permalink)  
Antiguo 15/03/2015, 03:08
Avatar de castilloabril  
Fecha de Ingreso: abril-2014
Mensajes: 6
Antigüedad: 10 años, 7 meses
Puntos: 0
problema diferencia dias entre fechas

Hola a todos, escribi un codigo para calcular la diferencia de dias entre dos fechas, pero me presenta problemas cuando calculo para dos fechas en particular

Código:
public long diasDifferencia(String fechaInit, String fechaEnd){

String[] dateInit = fechaInit.split("/");
String[] dateEnd = fechaEnd.split("/");

Date dInit = new GregorianCalendar(yInit, Integer.parseInt(dateInit[1])-1, Integer.parseInt(dateInit[0])).getTime();

Date dEnd = new GregorianCalendar(yEnd, Integer.parseInt(dateEnd[1])-1, Integer.parseInt(dateEnd[0])).getTime();


long diff = (dEnd.getTime() - dInit.getTime())/(1000 * 60 * 60 * 24);

return diff;

}
cuando ejecuto el codigo en consola todo marcha bien excepto para marzo y abril:

Código:
System.out.println(diasDifferencia("02/01/2001","02/01/2002"));
// resultado: 365 (bien)

System.out.println(diasDifferencia("02/01/2002","31/03/2002"));
// resultado: 88 (bien)

System.out.println(diasDifferencia("02/01/2002","01/04/2002"));
// resultado: 88 (mal)
El resultado para el "01/04/2002" deberia ser 89 y lo toma como si fuera el ultimo dia de marzo. No identifico el error.

Gracias de antemano por su ayuda.
  #2 (permalink)  
Antiguo 15/03/2015, 04:05
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: problema diferencia dias entre fechas

Compruébalo otra vez porque da 89.

https://ideone.com/ku6Drk#stdin

De todas formas, el código que has puesto no es el que estás utilizando, ¿yInit yEnd?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 15/03/2015, 06:21
Avatar de castilloabril  
Fecha de Ingreso: abril-2014
Mensajes: 6
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: problema diferencia dias entre fechas

Gracias por la respuesta. Correccion del codigo pasado

Código Java:
Ver original
  1. int yInit = Integer.parseInt(dateInit[2]);
  2.  
  3. int yEnd = Integer.parseInt(dateEnd[2]);

No sé si sera un problema de JVM, estoy trabajando con NetBeans IDE 8.0, copie el codigo de ideone.com pero sigo teniendo como resultado 88. Y esto pasa en particular cuando se pasa de marzo a abril.

Este es el resultado de la consola.

Código Java:
Ver original
  1. run:
  2. 88
  3. BUILD SUCCESSFUL (total time: 0 seconds)

Gracias nuevamente por sus comentarios.
  #4 (permalink)  
Antiguo 15/03/2015, 07:40
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: problema diferencia dias entre fechas

Cita:
copie el codigo de ideone.com pero sigo teniendo como resultado 88
Yo he copiado tu código en ideone, y como puedes ver da 89.

Se me ocurre que tu problema puede ser el cambio horario de marzo, en ideone no afecta porque tendrán otro locale distinto al que tienes tú. El cambio es el último domingo de marzo, que fue el 31 en 2002.

¿Qué Locale usas? Prueba a ver el resultado que te da con decimales incluidos.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 15/03/2015, 09:47
Avatar de castilloabril  
Fecha de Ingreso: abril-2014
Mensajes: 6
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: problema diferencia dias entre fechas

Gracias otra vez. Efectivamente, era un problema de la zona horaria de mi maquina. Pero ahora me surge la duda de como cambiar la zona horaria de una proyecto especifico de Java sin tocar el locale de la maquina?

Que metodos exixten en GregorianCalendar que permitan definir un locale que va a ser utilizado dentro de un proyecto en particular.

Gracias de antemanos por sus observaciones.
  #6 (permalink)  
Antiguo 16/03/2015, 03:04
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: problema diferencia dias entre fechas

Cita:
Que metodos exixten en GregorianCalendar que permitan definir un locale que va a ser utilizado dentro de un proyecto en particular.
Lo puedes ver en la API

http://docs.oracle.com/javase/7/docs...nCalendar.html

De todas formas tienes otras soluciones, tu problema es que el día 31 tiene una hora menos y por eso te da un resultado decimal del que desprecias los decimales. No los desprecies, redondea, tienes a tu disposición la clase Math.

Recuerda que en octubre hay un día con una hora más, así que tu redondeo deberá ser el clásico, hasta .5 es el mismo número, a partir de 5 uno más.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: dias, diferencia, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:39.