我想计算不同年份的两个日期之间的差异,以秒为单位。我这样做是这样的:
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()
返回a,long
因为结果可以大于整数。当您将Integer.MAX_VALUE
整数转换为大于整数的整数时,会产生溢出,并且该值可能变为负数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句