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

标签 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

结果是 -169191300

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

谁能解释一下这里发生了什么?

最佳答案

使用 long 而不是 int

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

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

关于java - 不同年份的两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758090/

相关文章:

java - 如何将日期从 DatePickerDialog 返回到 Mainactivity

PHP 和 10 月底

java - 如何持久保存 Map<String, List<String>>?

来自 'HH-MM' 形式字符串的 Javascript 日期对象

sql - PostgreSQL:如何优雅地返回带有单空格分隔的罗马日期?

multithreading - 使用QTtimer安排线程?

javascript - 在 React 中渲染组件时有条件地更新 this.state?

python - 检查 line 是否是 Python 中的时间戳

java - Web 服务和 Web 应用程序

java - 在 ControllerTest 中使用 @WebAppConfiguration 而不是 @SpringBootTest 时,Spring Data JPA 中会忽略延迟初始化