java - Java中两个日期之间的天数差异?

标签 java jodatime datediff

我需要找到两个日期之间的天数:一个来自报告,一个来自当前日期。我的片段:

  int age=calculateDifference(agingDate, today);

这里 calculateDifference 是一个私有(private)方法,agingDatetodayDate 对象,只是为了你的澄清。我关注了 Java 论坛上的两篇文章,Thread 1/Thread 2 .

它在独立程序中运行良好,尽管当我将其包含在我的逻辑中以从报告中读取时,我得到了一个不寻常的值差异。

为什么会发生,我该如何解决?

编辑:

与实际天数相比,我得到的天数更多。

public static int calculateDifference(Date a, Date b)
{
    int tempDifference = 0;
    int difference = 0;
    Calendar earlier = Calendar.getInstance();
    Calendar later = Calendar.getInstance();

    if (a.compareTo(b) < 0)
    {
        earlier.setTime(a);
        later.setTime(b);
    }
    else
    {
        earlier.setTime(b);
        later.setTime(a);
    }

    while (earlier.get(Calendar.YEAR) != later.get(Calendar.YEAR))
    {
        tempDifference = 365 * (later.get(Calendar.YEAR) - earlier.get(Calendar.YEAR));
        difference += tempDifference;

        earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
    }

    if (earlier.get(Calendar.DAY_OF_YEAR) != later.get(Calendar.DAY_OF_YEAR))
    {
        tempDifference = later.get(Calendar.DAY_OF_YEAR) - earlier.get(Calendar.DAY_OF_YEAR);
        difference += tempDifference;

        earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
    }

    return difference;
}

注意:

不幸的是,没有一个答案可以帮助我解决问题。我已经完成了this problemJoda-time 的帮助下图书馆。

最佳答案

我建议你使用优秀的 Joda Time库而不是有缺陷的 java.util.Date 和 friend 。你可以简单地写

import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;

Date past = new Date(110, 5, 20); // June 20th, 2010
Date today = new Date(110, 6, 24); // July 24th 
int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays(); // => 34

关于java - Java中两个日期之间的天数差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299972/

相关文章:

mysql - 使用 datediff 更新字段

java - HashMap 搜索和匹配正则表达式

Java 8 : How to parse expiration date of debit card?

java - Joda Time minusweeks() 和 plusweeks() 超过一年打破 2014/2015 分割?

java - 我应该使用 Java 日期和时间类还是使用像 Joda Time 这样的 3rd 方库?

mysql - SELECT 2 个日期时间列中的差异 WHERE 间隔

java - 如果实际大小大于 Integer.MAX_VALUE,我如何找出 java.util.List 的大小?

java - 如果 Controller 没有对模型的引用,您能否为 MVC 风格的游戏构建 Swing GUI?

java - 使用 Spring MVC 在 JSP 页面中显示一组对象

c# - 计算给定日期范围内星期一的数量