Recibo el error más extraño al intentar analizar una cadena como un calendario. Parece que estropea el objeto Date que utilizo para establecer el tiempo del calendario de resultados. El error es bastante inconsistente (o no veo lógica en ello). ¿Alguien puede señalar lo que podría estar haciendo mal?Obteniendo datos incorrectos al usar SimpleDateFormat.parse()
public class caltest{
public static final SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.SSS");
public static void main(String[] args) {
String date1 = "1992-03-11 12:00:12.123";
String date2 = "1993-03-11 12:00:12.123";
String date3 = "1994-03-11 12:00:12.123";
String date4 = "1995-03-11 12:00:12.123";
parseStringAsCalendar(date1);
parseStringAsCalendar(date2);
parseStringAsCalendar(date3);
parseStringAsCalendar(date4);
}
public static String calendarToString(Calendar cal) {
return sdf.format(cal.getTime());
}
public static Calendar parseStringAsCalendar(String s) {
Date time = null;
try {
time = sdf.parse(s);
} catch (ParseException e) {
System.out.println("Exception");
e.printStackTrace();
}
System.out.println(time.toString());
GregorianCalendar ret = new GregorianCalendar();
ret.setTime(time);
return ret;
}
}
La salida es:
Sun Dec 29 12:00:12 CET 1991
Sun Dec 27 12:00:12 CET 1992
Sun Dec 26 12:00:12 CET 1993
Sun Jan 01 12:00:12 CET 1995
Ambas respuestas fueron muy útiles, éste brilla más de una luz en el problema subyacente. Estaba revisando la documentación incorrecta. – Tegi
¡me acabas de salvar de varias horas de búsqueda infructuosa en Internet! gracias – KoW
¿Cuál es exactamente la diferencia entre * año * y * semana año *? La documentación es un poco escasa en esta distinción (como es la documentación para el Calendario). – tytk