为什么 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());
在下面的代码中,我将 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());