No estoy seguro de lo que estoy haciendo mal, pero tengo una pieza de código que calcula el número de días entre dos fechas, y que será similar a la siguiente:Error en el calendario/fecha de Java para el 2 de octubre de 2010?
final Calendar first = new GregorianCalendar(2010, Calendar.OCTOBER, 1);
final Calendar last = new GregorianCalendar(2010, Calendar.NOVEMBER, 1);
final long difference = last.getTimeInMillis() - first.getTimeInMillis();
final long days = difference/(1000 * 60 * 60 * 24);
System.out.println("difference: " + difference);
System.out.println("days: " + days);
Para resumir , el bloque de código anterior calcula el número de días entre el 1 de octubre de 2010 y el 1 de noviembre de 2010. estoy esperando para ver lo devolverá 31 días (ya que hay 31 días en octubre)
difference: xxxx
days: 31
sino que está mostrando 30 días en octubre!
difference: 2674800000
days: 30
he logrado reducirlo a entre el 2 las fechas octubre de 2010 y 3 de octubre de 2010, que sólo parece haber 82800000 milisegundos, en lugar de un total de 86400000 milisegundos (exactamente una hora que faltan).
¿Alguien tiene alguna idea de lo que estoy haciendo mal? ¿O es el 2 de octubre una fecha especial que tiene un minuto menos que un día normal?
edite el código para reemplazar 9 y 10 con las constantes de mes. Esto sigue confundiendo a la gente aquí. – Thilo
Ah, sí, sí, aclamaciones, creo que alguien ya lo editó – jklp