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

Problemas usando Date.setTime

Estas en el tema de Problemas usando Date.setTime en el foro de Java en Foros del Web. Hola, buenos días He estado todo el día tratando de averiguar que ocurre cuando uso esta función del Date. Este es mi código: Código: package ...
  #1 (permalink)  
Antiguo 22/10/2010, 05:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 1
Problemas usando Date.setTime

Hola, buenos días

He estado todo el día tratando de averiguar que ocurre cuando uso esta función del Date. Este es mi código:

Código:
package main;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Main {

	static Date date = new Date();
	static int counter = 0;
	
	public static void main(String args[]) {
		DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss");
		try {
			date = dateFormat.parse("01/01/2000 00:00:00");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(;;)
			printDate();
	}

	private static void printDate() {
		long time = date.getTime();
		time += (counter * 1000);
		counter += 60;
		Date toPrint = new Date();
		toPrint.setTime(time);
		System.out.println("Time: " + toPrint.toString());
	}
}
Y todo va bien hasta que llega al día 25 de Enero, dónde empieza a generarme la siguiente salida (sin saber por qué, al menos yo no lo sé):

Time: Tue Jan 25 20:29:00 CET 2000
Time: Tue Jan 25 20:30:00 CET 2000
Time: Tue Jan 25 20:31:00 CET 2000
Time: Tue Dec 07 03:29:12 CET 1999
Time: Tue Dec 07 03:30:12 CET 1999

Salta del 25 de enero a las 20:31 al 7 de diciembre del año pasado...

¿Alguién sabe por qué?

Usando la clase Calendar pasa exactamente igual.

Muchas gracias, un saludo!
  #2 (permalink)  
Antiguo 22/10/2010, 09:12
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas usando Date.setTime

wow, interesante!! Se parece algo al efecto 2000.

Por lo que parece al llegar aquí:

Time: Tue Jan 25 20:31:00 CET 2000

Pasa a contar negativo con respecto al 1 de Enero, y obtienes el 7 de Diciembre

Time: Tue Dec 07 03:29:12 CET 1999

(3h y 29min que eran las que quedaban para llegar a las 24.00 en la fecha anterior).

Y a partir de ahí sigue sumando.

// Puedes buscar las sources de las clases Date y Calendar para mirar si hay algún problema en el código con el año 2000.

// Por otra parte ¿Tu pc es un equipo antiguo o es anterior al año 2000? ¿Y el sistema operativo?
  #3 (permalink)  
Antiguo 22/10/2010, 11:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 1
Respuesta: Problemas usando Date.setTime

Muchas gracias por tu respuesta Fuzzylog

Sí, la verdad que yo también estoy sorprendido. Pensando también en el efecto 2000 y todo eso efectué pruebas partiendo del año en el que Java empieza: 1/1/1970 y en exactamente la misma fecha y hora 25 de Enero a las 20:31 pasa lo mismo, salta a diciembre del 69 (lo cual es RARO, ya que va por detrás de la fecha que ellos mismo establecen como inicial (pero bueno, supongo que es posible, ya que intuyo que puede establecer una fecha cualquiera, incluso previa a al 1970).

Respecto al SO: es Windows XP, java está actualizado al máximo y el PC, es de la oficina, pero como mucho debe tener 2 años.

Gracias nuevamente, un saludo! (a ver si damos con lo qué es, porque a primera vista parece un BUG, pero dudo MUCHÍSIMO que una clase tan importante como esa tenga un fallo así).
  #4 (permalink)  
Antiguo 23/10/2010, 16:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas usando Date.setTime

Empieza por sacar por pantalla los valores de todas las variables usadas en cada iteracíón, asi puedes tener alguna pista de por donde se produce el problema.

Etiquetas: Ninguno
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 02:50.