Por que subtrair dois timestamps em milissegundos (ano 1927) dá um resultado estranho?
Olá a todos! Sou novo em Java e estou aprendendo sobre datas e horas. Escrevi um código simples que calcula a diferença entre dois momentos em milissegundos. Mas o resultado me chocou!
Aqui está meu 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("Diferença em milissegundos: " + diffInMillis);
}
}
```
Eu esperava ver 1000 milissegundos (1 segundo), mas na saída obtenho **-353**! Como isso é possível? 1 segundo não é igual a 1000 milissegundos? Por que a diferença é negativa?