为什么 Epoch 使用 java.util.date 没有失败?

Why Epoch didn't fail using java.util.date?

在下面的代码中,我将 java.util.date 转换为 java.sql.date。我感到困惑的是,在给出纪元之前的日期时,如下所示,我还使用了 date.getTime() 方法,它给出了从纪元开始的毫秒数,它给了我正确的时间,如结果所示。我的问题是为什么它没有失败(正如我假设的那样)?为什么它给出了正确的时间?

代码:

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); //defining format
String dateOfAdmissionInString = "22-01-1966 05:03:33"; 
Date utilDateOfAdmission = sdf2.parse(dateOfAdmissionInString); 
java.sql.Timestamp sqlDateOfAdmission = new Java.sql.Timestamp(utilDateOfAdmission.getTime()); 
 System.out.println("utilDateOfAdmission:" + utilDateOfAdmission);
 System.out.println("sqlDateOfAdmission:" + sqlDateOfAdmission);

结果:

utilDateOfAdmission: Sat Jan 22 05:03:33 PKT 1966

sqlDateOfAdmission: 1966-01-22 05:03:33.0

纪元只是指定零值的位置。 Dates/times 之前的点仍然可以表示为距纪元的负偏移量。

My questions is why it didn't fail

因为自 The Epoch 以来的毫秒数允许为负数,这表示 date/times 1970 年 1 月 1 日格林威治标准时间午夜之前。

Gratuitous example: 猫王的生日:

Date dt = new Date(-1103932800000L);
System.out.println(dt.toString());