【问题标题】:Difference between two dates with different years [duplicate]不同年份的两个日期之间的差异[重复]
【发布时间】:2015-11-17 13:24:41
【问题描述】:

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

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

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

【问题讨论】:

  • 我建议在 java 8 中查看 joda-timejava.time 以了解任何与时间相关的操作。

标签: java date time


【解决方案1】:

使用long 而不是int

public static long dateDifference(Date d1, Date d2){
    return (d2.getTime() - d1.getTime());
}

getTime() 返回long,因为结果可能大于整数。当您将大于 Integer.MAX_VALUE 的 long 转换为整数时,您会得到一个 overflow 并且该值可以变为负数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多