Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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

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 不同年份的两个日期之间的差异_Java_Date_Time - Fatal编程技术网

Java 不同年份的两个日期之间的差异

Java 不同年份的两个日期之间的差异,java,date,time,Java,Date,Time,我想计算不同年份的两个日期之间的差异,以秒为单位。我是这样做的: public static int dateDifference(Date d1, Date d2){ return (int) (d2.getTime() - d1.getTime()); } 问题是,当我为这些日期运行此示例时: d1 = Tue Nov 17 14:18:20 GMT+01:00 2015 d2 = Fri Nov 28 15:37:50 GMT+02:00 2016 结果我得到了-1691913

我想计算不同年份的两个日期之间的差异,以秒为单位。我是这样做的:

public static int dateDifference(Date d1, Date d2){
    return (int) (d2.getTime() - d1.getTime());
}
问题是,当我为这些日期运行此示例时:

d1 = Tue Nov 17 14:18:20 GMT+01:00 2015
d2 = Fri Nov 28 15:37:50 GMT+02:00 2016
结果我得到了
-169191300

但当年份相同时,我得到了正确的结果,
954959013


有人能解释一下这里发生了什么吗?

long
代替
int

public static long dateDifference(Date d1, Date d2){
    return (d2.getTime() - d1.getTime());
}
getTime()
返回一个
long
,因为结果可能大于整数。当您将大于的long转换为整数时,您会得到一个值,该值可能会变为负值。

对于任何与时间相关的操作,我建议查看java 8中的或
java.time