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

Problema al restar tipos Date y Time

Estas en el tema de Problema al restar tipos Date y Time en el foro de Java en Foros del Web. Hola, tengo un problemilla con la resta de tiempos. El caso es que cuando resto dos tipos Date, el resultado es correcto, salvo que es ...
  #1 (permalink)  
Antiguo 07/01/2007, 16:24
 
Fecha de Ingreso: octubre-2006
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Problema al restar tipos Date y Time

Hola,
tengo un problemilla con la resta de tiempos.

El caso es que cuando resto dos tipos Date, el resultado es correcto, salvo que es una hora mas de lo que en realidad deberia dar.
Para realizar la resta, lo que hago es pasar los Dates a tipo long con el metodo getTimeInMillis() y luego resto dichas cantidades.
Despues creo un nuevo tipo Date con la cantidad obtenido en la resta anterior y cuando la imprimo veo que siempre es un hora mas.

Yo he pensado que tiene que ver algo con que estamos en la zona horaria GMT+1, aunque no estoy seguro.
Por ahora lo que hago es restar una hora a todos los resultados obtenidos, pero queria saber si hay otra forma.

¿Por que es esto?¿Como se puede solucionar?
  #2 (permalink)  
Antiguo 08/01/2007, 06:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Problema al restar tipos Date y Time

¿Las dos fechas son de la misma zona horaria? De todas formas... si lo pasas a milisegundos, la zona horaria no deberia importar ya que es, creo, independiente. Lo que cambia la zona horaria es el dia/hora etc pero no el numero de milisegundos, que es la representacion independiente.

¿Puede ser un error a la hora de mostrarlo?
Si pones un ejemplo completo con los datos y lo que te da, se puede mirar mejor, si no, todo son suposiciones.
  #3 (permalink)  
Antiguo 08/01/2007, 08:51
 
Fecha de Ingreso: octubre-2006
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Problema al restar tipos Date y Time

Hola denuevo:
Aqui te mando un pequeño main de ejemplo, con el que he confirmado lo que decia en mi pregunta. He usado tipos Time, pero es igual.

Espero que me puedas ayudar, o al menos espero una respuesta con tu punto de vista.
Aqui expongo el codigo, y pos supuesta...Muchas Gracias!

Codigo:

public static void main( String args[] ) {
Time time1 = new Time(10,00,00);
Time time2 = new Time(11,20,00);
System.out.println("time1:"+time1.toString());
System.out.println("time2:"+time2.toString());

long t1 = time1.getTime();
long t2 = time2.getTime();
long r = t2-t1;
Time resta = new Time(r);
System.out.println("timeResta:"+resta.toString());

//Para que el resultado sea correcto lo que hago hasta ahora es:
Calendar c = Calendar.getInstance();
c.setTimeInMillis(r);
c.set(Calendar.HOUR,c.get(Calendar.HOUR)-1);//resto una hora
resta.setTime(c.getTimeInMillis());
System.out.println("timeResta_Corregido:"+resta.to String());
}
  #4 (permalink)  
Antiguo 08/01/2007, 09:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Problema al restar tipos Date y Time

Ummm... no acabo de entender que es lo que quieres obtener con la operación.

Asignarle a un Calendar la resta de dos Time no tiene mucho sentido, creo yo, ya que estas asignando una diferencia de tiempo (horas minutos dias) a una fecha concreta...

¿Realmente que es lo que quieres obtener? ¿Cual es el tiempo entre una fecha y otra?
  #5 (permalink)  
Antiguo 08/01/2007, 09:27
 
Fecha de Ingreso: octubre-2006
Mensajes: 83
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Problema al restar tipos Date y Time

Bueno, quizá debi de haber usado esto en vez de emplear el Calendar:
resta.setHours(resta.getHours()-1);

Pero bueno, es igual, eso solo lo hago para restar una hora al Time resta que obtengo.

Lo que realmente quiero obtener es un Time que contenga la diferencia de otros dos Times.Solo eso. Y mi preguna es que quiero saber que hago mal, por que resulta que al imprimir el Time resta, este siempre es 1 hora mas del resultado que deberia dar.
¿Has probado a ejecutar mi main?
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 06:29.