Avatar ·

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?