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

时间:2016-06-30 05:45:31

标签: java date timestamp epoch

在下面的代码中,我将java.util.date转换为java.sql.date。我很困惑,虽然在下面给出了epoch之前的日期,我也使用了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

2 个答案:

答案 0 :(得分:3)

  

我的问题是它没有失败的原因

因为自上世纪以来的毫秒数被允许为负数,这表示 1970年1月1日格林尼治标准时间午夜之前的日期/时间

Gratuitous example:猫王的出生日期:

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

答案 1 :(得分:1)

epoch只指定值ZERO的位置。该点之前的日期/时间仍可表示为来自时期的负偏移。