Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么大纪元没有';使用java.util.date不会失败吗?_Java_Date_Timestamp_Epoch - Fatal编程技术网

为什么大纪元没有';使用java.util.date不会失败吗?

为什么大纪元没有';使用java.util.date不会失败吗?,java,date,timestamp,epoch,Java,Date,Timestamp,Epoch,在下面的代码中,我将java.util.date转换为java.sql.date。我感到困惑的是,虽然给出了如下所示的历元之前的日期,而且我还使用了date.getTime()方法,从历元开始计算毫秒,但它给了我正确的时间,如结果所示。我的问题是为什么它没有失败(我认为它应该失败)?为什么它给出了正确的时间 代码: SimpleDateFormat sdf2 = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); //defining format Strin

在下面的代码中,我将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
结果:

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

历元只指定值零的位置。该点之前的日期/时间仍可表示为与历元的负偏移量

历元只指定值0的位置。该点之前的日期/时间仍可表示为与历元的负偏移量

我的问题是为什么它没有失败

因为自历元起的毫秒数允许为负数,表示1970年1月1日午夜GMT之前的日期/时间

:猫王的生日:

Date dt = new Date(-1103932800000L);
System.out.println(dt.toString());
我的问题是为什么它没有失败

因为自历元起的毫秒数允许为负数,表示1970年1月1日午夜GMT之前的日期/时间

:猫王的生日:

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

我不明白,先生,-86400000的时间值是纪元前一天,或1969年12月31日00:00:00(在GMT/UTC区域)谢谢你的回答。我不明白,先生。时间值-86400000是纪元前一天,或1969年12月31日00:00:00(在GMT/UTC区域)谢谢你的回答。好的!那么使用这种方法可以吗?还是会在某个时候破裂?@RabiaNazkhan:完全没问题。请注意,对于任何重要的内容,您都希望使用
java.util.Calendar
(它也使用来自历元的偏移量)或各种(或JodaTime),因为
Date
几乎没有有用的特性,大约90%的API不推荐使用。但与时代的负偏移是完全正常的。例如,
java.util.Gregoriacalendar
处理1582年10月的不连续性,因此显然希望处理负历元值。好吧!先生,非常感谢您澄清了我的概念。好的!那么使用这种方法可以吗?还是会在某个时候破裂?@RabiaNazkhan:完全没问题。请注意,对于任何重要的内容,您都希望使用
java.util.Calendar
(它也使用来自历元的偏移量)或各种(或JodaTime),因为
Date
几乎没有有用的特性,大约90%的API不推荐使用。但与时代的负偏移是完全正常的。例如,
java.util.Gregoriacalendar
处理1582年10月的不连续性,因此显然希望处理负历元值。好吧!先生,非常感谢你澄清了我的想法。