Por qué restar dos marcas de tiempo en milisegundos (año 1927) da un resultado extraño?
¡Hola a todos! Soy nuevo en Java y estoy aprendiendo sobre fechas y horas. Escribí un código simple que calcula la diferencia entre dos momentos en milisegundos. ¡Pero el resultado me sorprendió!
Aquí está mi código:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class StrangeDateDifference {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date date1 = sdf.parse("1927-12-31 23:54:07");
Date date2 = sdf.parse("1927-12-31 23:54:08");
long diffInMillis = date2.getTime() - date1.getTime();
System.out.println("Diferencia en milisegundos: " + diffInMillis);
}
}
```
Esperaba ver 1000 milisegundos (1 segundo), pero en la salida obtengo **-353**! ¿Cómo es posible? ¿Un segundo no equivale a 1000 milisegundos? ¿Por qué la diferencia es negativa?